我有一个程序可以从QFontDatabase中以随机选择的字体显示消息:
import sys
from PyQt5 import uic
from PyQt5.QtGui import QFont, QFontDatabase
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
class MyWidget(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi("main1.ui", self)
db = QFontDatabase()
family = random.choice(db.families())
print(family)
font = db.font(family, "", 72)
self.label.setFont(font)
self.run()
def run(self):
self.label.setText("message")
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())
问题如下:我意识到由于某些原因,我需要从数据库中删除大多数标准字体。
我已经阅读了QFont的文档,但找不到解决方法,也许错过了一些东西。也许从具有选定字体的文件夹中执行选择会更容易?
我怎样才能做到这一点?
什么是标准字体?由于没有分类,因此很难知道。因此,正如您所指示的,最好在其中放置字体的文件夹,然后随机选择其中一种字体,然后我们使用以下方法QFontDatabase::addApplicationFont()
获取字体系列进行注册QFontDatabase::applicationFontFamilies()
:
├── fonts
│ ├── A.ttf
│ .
| .
| .
│ ├── ...
│ └── Z.ttf
├── main1.ui
└── main.py
main.py
import os
import random
import sys
from PyQt5 import uic
from PyQt5.QtGui import QFont, QFontDatabase
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
class MyWidget(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi("main1.ui", self)
current_dir = os.path.dirname(os.path.realpath(__file__))
font_dir = os.path.join(current_dir, "fonts")
files = os.listdir(font_dir)
file = random.choice(files)
print(file)
id_ = QFontDatabase.addApplicationFont(os.path.join(font_dir, file))
families = QFontDatabase.applicationFontFamilies(id_)
family = random.choice(families)
font = QFont(family, 72)
self.label.setFont(font)
self.run()
def run(self):
self.label.setText("message")
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = MyWidget()
ex.show()
sys.exit(app.exec_())
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句