Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Python: Общие вопросы > GUI и шрифты |
Автор: Artemios 13.11.2006, 10:41 |
Такая проблема. Требуется отображать некоторые данные некоторым специфическим шрифтом (с возможностью динамического редактирования, т.е. рендеринг в картинку или *.ps не подходит). Шрифт - в файле (True Type, можно Type 1). В систему шрифт ставить нельзя, т.е. надо бы, чтобы программа сама его загрузила из файла и использовала. В документации по Qt наблюдал только использование шрифтов, прописанных в системе (может не там искал?). Такое вообще можно реализовать? (желательно конечно в Qt, но на крайний случай можно хоть wx, хоть GTK) |
Автор: J2A 13.11.2006, 13:49 |
Покажи пример из Qt. Вообще, идея, IMHO, не очень перспективная (t1python и py-freetype2 выглядят не особо живыми). Проще добавлять шрифты в систему. |
Автор: Artemios 13.11.2006, 14:37 | ||
Не совсем понял... Примеры на Qt - в Assistant-е - все, что связано с классом QFont. На PyQt работать будет точно также. Но для QFont берутся уже поставленные в системе шрифты, например:
хорошо, попробую посмотреть, что это такое и с чем их едят, только как их прикрутить потом к Qt, например к какому-нибудь QTextEdit... кто бы спорил. |
Автор: setq 13.11.2006, 20:04 |
Что-то новое в Питоне появилось) [извините, что не в тему] |
Автор: Artemios 14.11.2006, 10:32 | ||
Да, извиняюсь, спп-шный код не до конца переправил ![]()
|
Автор: J2A 17.11.2006, 06:29 |
Ваше счастье, PyQt 4.1 сделан на Qt 4.2, так что пробуйте ![]() |
Автор: Artemios 17.11.2006, 11:04 |
Уже докачиваю ![]() ![]() А почему на "Вы"? |
Автор: J2A 17.11.2006, 11:54 |
У PyQt4 ощутимые плюсы по сравнению с PyQt3, хотя бы нормальные пространства имен ![]() На "Вы" по инерции, видимо, разговаривал с кем-то. |
Автор: Artemios 19.11.2006, 02:15 | ||||||||
Имеется Qt 4.2.1 , ну и соответствующая PyQt 4.1 под Python 2.5. ОС - Windows (не пинайте сильно сапогами - лень было в Linux из исходников собирать или заниматся поиском пакетов со свежей версией библиотеки) Делаю простенький примерчик для описанной выше задачи (использовать неизвестный системе шрифт). Пишу практически одно и то же на С++ и на Python-е. На спп 3 файла:
далее qmake -project , qmake , make -- все прекрасно компилируется и работает просто замечательно, все как надо - красиво набираем символы шрифтом, о существовании которого система не подозревает. Но если я пишу то же самое на Питоне:
-- интерпретатор в программе ошибок не находит, но при выполнении умирает (дойдя до последней строчки конструктора класса -- setFont) с дружелюбным предложением системы отослать отчет об ошибке товарищу M$ Гейтсу. А ведь хочется-то на PyQt, и независимо от системы. Что делать? Что не так? |
Автор: Artemios 21.11.2006, 00:53 | ||||
По-максимуму упростил примерчики, получил следующее:
и один-в-один:
Все то же самое: Qt работает, PyQt жестоко убивает интерпретатор на методе setFont. Поигрался с кодом, пришел к следующим выводам: 1. В PyQt последней версии проблемы со сменой шрифтов -- сколько бы я не задавал системных шрифтов, ошибок не возникает, но и отображение не изменяется; при попытке сменить шрифт на произвольный подгруженный из файла -- процесс умирает. При чем это проблема именно обертки PyQt, в самом Qt все те же команды работают корректно. 2. Однако в рамках одного шрифта изменение размера/наклона/цвета и т.д. в PyQt претензий не вызывает. Большая просьба: у кого на *nix уже стоит Qt 4.2 и PyQt 4.1, проверьте пожалуста последний пример (только имя файла шрифта не забудьте поменять). |
Автор: J2A 21.11.2006, 13:45 |
Попробую, но обещать не буду. |
Автор: Artemios 21.11.2006, 15:31 |
Заранее спасибо! |
Автор: Artemios 26.11.2006, 01:25 | ||||
Связался с автором PyQt, вот что он мне ответил:
хотя Фил даже не стал разбираться, ведь это:
не правда, уже сорок раз перепроверено: список не пустой и первой строкой -- название фонта. И почему именно Qt will crash, когда именно с Qt проблем нет? Теперь пытаться все ему по-английски объяснить ![]() |
Автор: Artemios 29.11.2006, 02:02 | ||
Свои баги нашел сам, но совсем не там, куда Фил указывал. Элементарно, забыл о питоновском сборщике мусора и временных объектах. А вот так:
все работает очень хорошо и очень правильно! ура. тему помечаю решенной. |
Автор: J2A 29.11.2006, 06:16 |
Молодца. А я только вчера скачал Qt 4.2... На днях попробую на платформе Linux. |