PyQt - QFontComboBox 控制元件



QFontComboBox 控制元件是一個組合框,用於在 PyQt 應用程式中選擇字體系列。它允許使用者從按字母順序排列的字體系列名稱列表中進行選擇。一些字體系列名稱包括 Arial、Helvetica 和 Times New Roman 等。

繼承關係

QFontComboBox 類繼承其核心功能自 QComboBox 類,而 QComboBox 類又繼承自 QWidgets 類。

pyqt qfontcombobox inheritance

QFontComboBox 的主要特性

  • 字體系列選擇 - 使用字體系列選擇,使用者可以輕鬆地從組合框中提供的按字母順序排列的列表中選擇字體系列。
  • 視覺表示 - 儘可能使用字型的實際樣式來顯示字型,這有助於使用者直觀地識別他們喜歡的字型。
  • 自定義 - 我們可以根據某些標準(如可伸縮性和書寫系統)過濾字型。
  • 整合 - 它通常與其他與字型相關的控制元件(如字型大小選擇器和樣式切換)一起整合到工具欄中。

示例 1:基本的 QFontComboBox 實現

在這個示例中,建立了一個簡單的 PyQt 應用程式,並在主視窗中添加了一個 QFontComboBox 控制元件。執行應用程式後,使用者可以互動式地從組合框中選擇字體系列。

這裡,initUI 方法透過設定 QVBoxLayout 來初始化使用者介面,以垂直排列控制元件,將 QFontComboBox 新增到佈局中,並將視窗標題設定為 'Font Selector'。最後,使用 QApplication 執行應用程式,顯示視窗並在應用程式退出之前處理事件。

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QFontComboBox

class FontSelector(QWidget):
   def __init__(self):
      super().__init__()
      self.initUI()

   def initUI(self):
      layout = QVBoxLayout()
      font_combo = QFontComboBox()
      layout.addWidget(font_combo)
      self.setLayout(layout)
      self.setWindowTitle('Font Selector')

if __name__ == '__main__':
   app = QApplication(sys.argv)
   window = FontSelector()
   window.show()
   sys.exit(app.exec())

輸出結果

以上程式碼產生以下結果:

pyqt qfontcombobox example 1

示例 2:使用 QFontComboBox 過濾字型

在下面的示例中,我們將建立一個字型選擇器,它只顯示可縮放的字型。當我們從組合框中選擇一個字型時,下面的標籤將更新以顯示所選的字體系列。

在一個 FontSelector QWidget 中,一個 QVBoxLayout 佈局排列控制元件。一個 QFontComboBox,font_combo,由於 setFontFilters() 而只顯示可縮放的字型。一個 QLabel,font_label,當字型選擇發生變化時,透過 update_label() 更新以顯示所選的字體系列。

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QFontComboBox, QLabel

class FontSelector(QWidget):
   def __init__(self):
      super().__init__()
      self.initUI()

   def initUI(self):
      layout = QVBoxLayout()

      # Create QFontComboBox
      font_combo = QFontComboBox()

      # Set font filters to show only scalable fonts
      font_combo.setFontFilters(QFontComboBox.FontFilter.ScalableFonts)

      # Create a label to display the selected font
      self.font_label = QLabel("Selected Font")

      # Connect fontChanged signal to update_label slot
      font_combo.currentFontChanged.connect(self.update_label)

      layout.addWidget(font_combo)
      layout.addWidget(self.font_label)
      self.setLayout(layout)
      self.setWindowTitle('Font Selector')

   def update_label(self, font):
      # Update the label text with the selected font family
      self.font_label.setText(f"Selected Font: {font.family()}")

if __name__ == '__main__':
   app = QApplication(sys.argv)
   window = FontSelector()
   window.show()
   sys.exit(app.exec())

輸出結果

以上程式碼產生以下結果:

pyqt qfontcombobox example 2
廣告

© . All rights reserved.