如何使用 PyQt6 中文件夹中的自定义字体而不是 Windows 中安装的字体

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

首先,我使用此代码在 GUI 上设置字体。

    def set_information_font(self): # Method for 
        if self.info_item == 0:
            font = QFont("/Franklin Gothic Medium Cond", 18)  # Ganti "Arial" dan 12 sesuai keinginan
        elif self.info_item == 1:
            font = QFont("Franklin Gothic Medium Cond", 18)  # Ganti "Arial" dan 12 sesuai keinginan
            
        print(f"Setting font for info_item = {self.info_item}")
        self.ui.label_information_2.setFont(font)  # Atur font untuk label_information_2
        self.ui.label_information_2.setStyleSheet("color: rgb(0, 87, 151);")
        
        self.ui.label_connection.setFont(QFont("Franklin Gothic Medium Cond", 20))  # Atur font untuk label_connection
        self.ui.label_connection.setStyleSheet("color: rgb(0, 87, 151);")

因此,当我使用此代码时,我使用Windows中已安装的字体。

第一个程序输出的GUI如图1所示

现在我想使用该字体,但字体源位于我的文件目录中,该目录位于字体文件夹中。我尝试使用下面的代码:

 def set_information_font(self):  # Method for setting font
        font_path = os.path.join(os.path.dirname(__file__), "font/FRAMDCN.TTF")
        
        # Cek apakah font ada
        if not os.path.exists(font_path):
            print("Font tidak ditemukan:", font_path)
            return

        # Atur font untuk label_information_2 dan label_connection menggunakan path font
        if self.info_item == 0:
            font = QFont(font_path, 18)  # Menggunakan path langsung ke file font
        elif self.info_item == 1:
            font = QFont(font_path, 18)  # Menggunakan path langsung ke file font
        
        self.ui.label_information_2.setFont(font)  # Atur font untuk label_information_2
        self.ui.label_information_2.setStyleSheet("color: rgb(0, 87, 151);")
        
        self.ui.label_connection.setFont(QFont(font_path, 20))  # Atur font untuk label_connection
        self.ui.label_connection.setStyleSheet("color: rgb(0, 87, 151);")

第一个程序输出的 GUI 如图 2 所示

但是该字体在 GUI 中没有成功应用。有什么解决办法吗?

谢谢你

图1

图2

我尝试了几个代码,但结果仍然相同

python user-interface fonts pyqt qt-designer
1个回答
0
投票

最后我找到了解决方案如下:

    def set_information_font(self): # Method for 
    
    id = QFontDatabase.addApplicationFont("font/FRAMDCN.TTF")
    families = QFontDatabase.applicationFontFamilies(id)
    
    if self.info_item == 0:
        font = QFont(families[0], 18)  # Ganti "Arial" dan 12 sesuai keinginan
    elif self.info_item == 1:
        font = QFont(families[0], 18)  # Ganti "Arial" dan 12 sesuai keinginan
        
    print(f"Setting font for info_item = {self.info_item}")
    self.ui.label_information_2.setFont(font)  # Atur font untuk label_information_2
    self.ui.label_information_2.setStyleSheet("color: rgb(0, 87, 151);")
    
    self.ui.label_connection.setFont(QFont(families[0], 20))  # Atur font untuk label_connection
    self.ui.label_connection.setStyleSheet("color: rgb(0, 87, 151);")

我使用QFontDataBase。

© www.soinside.com 2019 - 2024. All rights reserved.