PyQt - QDialogButtonBox 元件



QDialogButtonBox 工具簡化了在對話方塊中新增按鈕的過程。它簡化了建立對話方塊按鈕設定(如“確定”、“取消”、“應用”等)的過程。使用此功能,開發人員可以跨平臺維護按鈕位置和操作。

QDialogButtonBox 中使用的方法

以下是 QDialogButtonBox 元件的一些常用方法及其描述:

方法 描述
addButton() 向按鈕框新增一個按鈕。
button() 返回與指定角色關聯的按鈕。
setStandardButtons() 設定要新增到按鈕框的標準按鈕。
standardButton() 返回被點選的標準按鈕。

示例 1:建立簡單的 QDialogButtonBox

在這個例子中,我們使用 QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel 引數建立一個帶有“確定”和“取消”按鈕的 **QDialogButtonBox**。我們將按鈕框的 accepted 和 rejected 訊號分別連線到對話方塊的 accept 和 reject 槽。

import sys
from PyQt6.QtWidgets import QApplication, QDialog, QDialogButtonBox, QVBoxLayout

class Dialog(QDialog):
   def __init__(self):
      super().__init__()
      self.initUI()

   def initUI(self):
      layout = QVBoxLayout()
      buttonBox = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
      buttonBox.accepted.connect(self.accept)
      buttonBox.rejected.connect(self.reject)

      layout.addWidget(buttonBox)
      self.setLayout(layout)

if __name__ == '__main__':
   app = QApplication(sys.argv)
   dialog = Dialog()
   dialog.exec()
   sys.exit(app.exec())

輸出

以上程式碼產生以下輸出:

pyqt qDialogButtonBox example 1

示例 2:使用標準按鈕

在這個例子中,我們建立一個 **QDialogButtonBox** 並使用 setStandardButtons() 方法設定標準按鈕(儲存、取消和放棄)。我們將按鈕框的 clicked 訊號連線到自定義槽 buttonClicked,該槽使用 **standardButton()** 識別被點選的按鈕,並根據按鈕的角色執行特定操作。

import sys
from PyQt6.QtWidgets import QApplication, QDialog, QDialogButtonBox, QVBoxLayout

class Dialog(QDialog):
   def __init__(self):
      super().__init__()
      self.initUI()

   def initUI(self):
      layout = QVBoxLayout()
      buttonBox = QDialogButtonBox()
      buttonBox.setStandardButtons(QDialogButtonBox.StandardButton.Save | QDialogButtonBox.StandardButton.Cancel | QDialogButtonBox.StandardButton.Discard)
      buttonBox.clicked.connect(self.buttonClicked)

      layout.addWidget(buttonBox)
      self.setLayout(layout)

   def buttonClicked(self, button):
      role = buttonBox.standardButton(button)
      if role == QDialogButtonBox.Save:
         print("Save clicked")
      elif role == QDialogButtonBox.Cancel:
         print("Cancel clicked")
      elif role == QDialogButtonBox.Discard:
         print("Discard clicked")

if __name__ == '__main__':
   app = QApplication(sys.argv)
   dialog = Dialog()
   dialog.exec()
   sys.exit(app.exec())

輸出

以上程式碼產生以下輸出:

pyqt qDialogButtonBox example 2
廣告
© . All rights reserved.