Уведомления

Группа в Telegram: @pythonsu

#1 Июль 3, 2016 21:00:48

Lestoroer
Зарегистрирован: 2015-12-24
Сообщения: 88
Репутация: +  5  -
Профиль   Отправить e-mail  

Шрифты

Неужели никак нельзя подключить пользовательские шрифты в PyQt и PySide?
Имеется некоторый проект, после сброса его на другой компьютер оказалось так, что на нем не оказалось таких шрифтов, как на компьюетере создателя и все “поехало”. QFont прописываю - бесполезно, так понимаю, он работает только со стандартными шрифтами. Обнаружил какой-то QFontDataBase пробовал его, тоже не получилось. В проекте раз 200 используется QFont, даже если с QFontDataBase получится, неужели все перебивать? Есть еще такой вариант, каким-нибудь тихим способом устанавливать на другие компьютеры шрифты.
Кто что знает по этому поводу и кто чем может подсказать? До сих пор сижу и чувствую себя дураком, писал это чудо месяц и тут на тебе.

Отредактировано Lestoroer (Июль 3, 2016 21:01:59)

Офлайн

#2 Июль 3, 2016 21:43:49

leonid_10
От:
Зарегистрирован: 2010-03-28
Сообщения: 197
Репутация: +  3  -
Профиль   Отправить e-mail  

Шрифты

Lestoroer
Обнаружил какой-то QFontDataBase пробовал его, тоже не получилось. В проекте раз 200 используется QFont, даже если с QFontDataBase получится, неужели все перебивать?
Ничего не ясно. Если на компе нет шрифта, но он вбит, всё работает, рисуя шрифтом по умолчанию В чём проблема?

from PySide import QtGui
import sys
def main():    
    app 	 = QtGui.QApplication(sys.argv)
    lineEdit	 = QtGui.QLineEdit()     
    QtGui.QFontDatabase.addApplicationFont("Cleopatra.ttf")
    font	 = QtGui.QFont("Cleo",20,QtGui.QFont.Bold,False)    
    font.setUnderline(True);    
    lineEdit.setFont(font);    
    lineEdit.setWindowTitle("QLineEdit Set Font")
    lineEdit.show();   
    sys.exit(app.exec_())
if __name__ == '__main__':
    main()
Указываешь адрес файла шрифта и всё - никакой установки. В примере в названии шрифта ошибка - пишет дефолтным.



Офлайн

#3 Июль 3, 2016 22:50:19

Lestoroer
Зарегистрирован: 2015-12-24
Сообщения: 88
Репутация: +  5  -
Профиль   Отправить e-mail  

Шрифты

leonid_10
Если честно, я кажется понял фишку. Спасибо тебе). Весь смысл был в том, что сначала передаешь название файла, а потом открываешь шрифт, смотришь название его и передаешь название шрифта (я передавал везде название,фейл). Вот пример кода, может кому понадобится:
#!/usr/bin/python
from PyQt5.Qt import QWidget, QLabel, QFont, QPushButton,\
    QApplication, QFontDatabase
class MyWindow(QWidget): 
    def __init__(self):
        super().__init__()
        self.window()
    def window (self):
        #размеры окна
        self.resize(350,100)
        #создаем текст
        lbl = QLabel('This text FFFFFFFFFFFFF', self)
        #применяем какой-то фонтдатабейс и пишем название ФАЙЛА CyrillicOldBold.ttf с его форматом (ну или путь к нему)
        QFontDatabase.addApplicationFont('CyrillicOldBold.ttf')
        #Здесь пишем название ШРИФТА
        font = QFont('CyrillicOld', 20)
        lbl.setFont(font)
        button = QPushButton('Кнопка',self)
        button.clicked.connect(self.exit_app)
        button.move(130,50)
    def exit_app (self):
        self.close()
if __name__ == '__main__':
    import sys 
    app = QApplication(sys.argv)
    window = MyWindow() 
    window.show()
    sys.exit(app.exec_())

Отредактировано Lestoroer (Июль 4, 2016 06:20:54)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version