![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Такая проблема.
Требуется отображать некоторые данные некоторым специфическим шрифтом (с возможностью динамического редактирования, т.е. рендеринг в картинку или *.ps не подходит). Шрифт - в файле (True Type, можно Type 1). В систему шрифт ставить нельзя, т.е. надо бы, чтобы программа сама его загрузила из файла и использовала. В документации по Qt наблюдал только использование шрифтов, прописанных в системе (может не там искал?). Такое вообще можно реализовать? (желательно конечно в Qt, но на крайний случай можно хоть wx, хоть GTK) -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
J2A |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
Покажи пример из Qt.
Вообще, идея, IMHO, не очень перспективная (t1python и py-freetype2 выглядят не особо живыми). Проще добавлять шрифты в систему. Это сообщение отредактировал(а) J2A - 13.11.2006, 13:52 --------------------
Be easy, stay cool |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Не совсем понял... Примеры на Qt - в Assistant-е - все, что связано с классом QFont. На PyQt работать будет точно также. Но для QFont берутся уже поставленные в системе шрифты, например:
хорошо, попробую посмотреть, что это такое и с чем их едят, только как их прикрутить потом к Qt, например к какому-нибудь QTextEdit... кто бы спорил. -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
setq |
|
|||
Unregistered |
||||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Да, извиняюсь, спп-шный код не до конца переправил ![]()
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Урра! Ответили тут:
http://forum.vingrad.ru/topic-121190/unrea...tml#entry926574 для интересующихся скопирую сюда:
и вот сам пример (правда на с++), как использовать шрифт, динамически выкачанный из сети:
Добавлено @ 01:52 P.S. Версия Qt (4.2) критична, так как в 4.1 у класса QFontDatabase еще нет метода addApplicationFontFromData. -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
J2A |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
Ваше счастье, PyQt 4.1 сделан на Qt 4.2, так что пробуйте
![]() --------------------
Be easy, stay cool |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Уже докачиваю ![]() ![]() А почему на "Вы"? -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
J2A |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
У PyQt4 ощутимые плюсы по сравнению с PyQt3, хотя бы нормальные пространства имен
![]() На "Вы" по инерции, видимо, разговаривал с кем-то. --------------------
Be easy, stay cool |
|||
|
||||
Artemios |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Имеется Qt 4.2.1 , ну и соответствующая PyQt 4.1 под Python 2.5.
ОС - Windows (не пинайте сильно сапогами - лень было в Linux из исходников собирать или заниматся поиском пакетов со свежей версией библиотеки) Делаю простенький примерчик для описанной выше задачи (использовать неизвестный системе шрифт). Пишу практически одно и то же на С++ и на Python-е. На спп 3 файла:
далее qmake -project , qmake , make -- все прекрасно компилируется и работает просто замечательно, все как надо - красиво набираем символы шрифтом, о существовании которого система не подозревает. Но если я пишу то же самое на Питоне:
-- интерпретатор в программе ошибок не находит, но при выполнении умирает (дойдя до последней строчки конструктора класса -- setFont) с дружелюбным предложением системы отослать отчет об ошибке товарищу M$ Гейтсу. А ведь хочется-то на PyQt, и независимо от системы. Что делать? Что не так? Это сообщение отредактировал(а) Artemios - 19.11.2006, 04:03 -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||||||
|
|||||||||
Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
По-максимуму упростил примерчики, получил следующее:
и один-в-один:
Все то же самое: Qt работает, PyQt жестоко убивает интерпретатор на методе setFont. Поигрался с кодом, пришел к следующим выводам: 1. В PyQt последней версии проблемы со сменой шрифтов -- сколько бы я не задавал системных шрифтов, ошибок не возникает, но и отображение не изменяется; при попытке сменить шрифт на произвольный подгруженный из файла -- процесс умирает. При чем это проблема именно обертки PyQt, в самом Qt все те же команды работают корректно. 2. Однако в рамках одного шрифта изменение размера/наклона/цвета и т.д. в PyQt претензий не вызывает. Большая просьба: у кого на *nix уже стоит Qt 4.2 и PyQt 4.1, проверьте пожалуста последний пример (только имя файла шрифта не забудьте поменять). -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
J2A |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 17.11.2005 Где: Омск Репутация: 16 Всего: 18 |
Попробую, но обещать не буду.
--------------------
Be easy, stay cool |
|||
|
||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Заранее спасибо!
-------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
Artemios |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Связался с автором PyQt, вот что он мне ответил:
хотя Фил даже не стал разбираться, ведь это:
не правда, уже сорок раз перепроверено: список не пустой и первой строкой -- название фонта. И почему именно Qt will crash, когда именно с Qt проблем нет? Теперь пытаться все ему по-английски объяснить ![]() -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
||||
|
|||||
Artemios |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 405 Регистрация: 14.8.2006 Где: Саратов, Россия Репутация: 18 Всего: 50 |
Свои баги нашел сам, но совсем не там, куда Фил указывал.
Элементарно, забыл о питоновском сборщике мусора и временных объектах. А вот так:
все работает очень хорошо и очень правильно! ура. тему помечаю решенной. -------------------- fib = 1: 1: [ x+y | (x,y) <- zip fib (tail fib) ] |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |