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

问题描述 投票:1回答:2

我有一个程序可以从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的文档,但是找不到解决方法,也许错过了一些东西。也许从具有选定字体的文件夹中执行选择会更容易?我该怎么办?

python pyqt pyqt5 qt-designer
2个回答
1
投票
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_())

创建字体家族列表并选择:


1
投票
© www.soinside.com 2019 - 2024. All rights reserved.