gpt4 book ai didi

python - 如何从 QFontDatabase 中删除某些字体?

转载 作者:行者123 更新时间:2023-12-01 00:25:08 25 4
gpt4 key购买 nike

我有一个程序,可以用从 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

ma​​in.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_())

关于python - 如何从 QFontDatabase 中删除某些字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58638821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com