iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
Python

pythonGUI學習筆記系列 第 17

Day17: PySide6 對話框(QMessageBox)

  • 分享至 

  • xImage
  •  

QMessageBox

  • QMessageBox : 對話框,可以用來顯示訊息、警告、錯誤提示,或是詢問使用者簡單的回應(例如 是/不是/取消)。

QMessageBox 添加元件

  • QMessageBox.about(self , title , text) : 顯示一些關於應用程式的訊息,如版本資訊、版權聲明等。這個方法不會提供回應選項,僅有一個確認按鈕。下面範例是點擊按鈕,會跳出對話框。
![about 圖片](https://ithelp.ithome.com.tw/upload/images/20240926/20169254eKdAgbuWai.png)
from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        btn = QPushButton("按鈕",self)
        btn.clicked.connect(self.btnClicked)

    def btnClicked(self):
        QMessageBox.about(self, "我是標題", "我是內容")


if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()
  • QMessageBox.information(self , title , text , QMessageBox.button) : 顯示使用者一些資訊。對話框中可以設置按鈕選項。button 要使用 QMessage.選項。下面範例是點擊按鈕,會跳出對話框,對話框會有 Yes 和 No 兩個選項。
    資訊圖
from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        btn = QPushButton("按鈕",self)
        btn.clicked.connect(self.btnClicked)

    def btnClicked(self):
        QMessageBox.question(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)


if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()
  • QMessageBox.critical(self , title , text , QMessageBox.button) : 錯誤訊息對話框,通常用來提示發生了嚴重錯誤。對話框中會帶有一個錯誤圖示,可以設置按鈕選項。
QMessageBox.critical(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)

錯誤

  • QMessageBox.question(self , title , text , QMessageBox.button) : 詢問對話框,通常用來詢問使用者是否確認某個操作,可以設置按鈕選項。
QMessageBox.question(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)

https://ithelp.ithome.com.tw/upload/images/20240926/20169254RnPLHvPCCG.png

  • QMessageBox.warning(self , title , text , QMessageBox.button) : 警告訊息對話框,通常用來提示潛在的風險或警告。這個對話框帶有警告圖示,可以設置按鈕選項。
QMessageBox.warning(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)

風險和警告

常用的按鈕 (QMessageBox.button) 選項

功能 方法
確認 QMessageBox.Ok
取消 QMessageBox.Cancel
QMessageBox.Yes
QMessageBox.No
重試 QMessageBox.Retry
忽略 QMessageBox.Ignore
關閉 QMessageBox.Close
幫助 QMessageBox.Help
套用 QMessageBox.Apply
儲存 QMessageBox.Save
重設 QMessageBox.Reset

另一種添加 QMessageBox 方式

除了使用上面的方法,也可以一個一個屬性設定。

  • setWindowTitle(str) : 設定對話框的標題。
  • setText(str) : 設置對話框的內容文字。
  • setIcon(QMessageBox.Icon) : 設置對話框的 Icon 圖案。
  • setStandardButtons(QMessageBox.button) : 設置對話框的按鈕選項 。
from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        btn = QPushButton("按鈕",self)
        btn.clicked.connect(self.btnClicked)

    def btnClicked(self):
       msg = QMessageBox(self)
       msg.setWindowTitle("對話框")   #設定文字
       msg.setText("我是訊息")        #設定顯示訊息
       msg.setIcon(QMessageBox.Warning)
       msg.setStandardButtons(QMessageBox.Ok|QMessageBox.No)
       msg.exec()                     #顯示訊息框


if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

自訂

QMessageBox 使用

當按下按鈕後,程式會顯示一個 QMessageBox 訊息對話框,並將使用者的回應儲存在 respond 變數中。如果使用者點擊了 Ok 按鈕,程式會列印出「你點擊了Ok」;如果使用者點擊了 No 按鈕,程式則會列印出「你點擊了No」。

from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(250, 250)

        btn = QPushButton("按鈕")
        btn.clicked.connect(self.btnClicked)

        mainLayout = QVBoxLayout()
        mainLayout.addWidget(btn)
        self.setLayout(mainLayout)

    def btnClicked(self):
        respond = QMessageBox.information(self, "我是標題", "我是內容", QMessageBox.Ok | QMessageBox.No )
        if respond == QMessageBox.Ok:
            print("你點擊了Ok")
        elif respond == QMessageBox.No:
            print("你點擊了No")

if __name__ == "__main__":
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

總結

  • 添加 QMessageBox
方法 功能
訊息對話框 QMessageBox.about(self , title , text)
資訊對話框 QMessageBox.information(self , title , text , QMessageBox.button)
錯誤對話框 QMessageBox.critical(self , title , text , QMessageBox.button)
詢問對話框 QMessageBox.question(self , title , text , QMessageBox.button)
警告對話框 QMessageBox.warning(self , title , text , QMessageBox.button)
  • 常用的按鈕 (QMessageBox.button) 選項
功能 方法
確認 QMessageBox.Ok
取消 QMessageBox.Cancel
QMessageBox.Yes
QMessageBox.No
重試 QMessageBox.Retry
忽略 QMessageBox.Ignore
關閉 QMessageBox.Close
幫助 QMessageBox.Help
套用 QMessageBox.Apply
儲存 QMessageBox.Save
重設 QMessageBox.Reset
  • QMessageBox功能
功能 方法
設定對話框標題 setWindowTitle(str)
設定文字內容 setText(str)
設定Icon setIcon(QMessageBox.Icon)
設定按鈕 setStandardButtons(QMessageBox.button)
  • QMessageBox使用 : 給一個變數接收 QMessageBox 的回應訊息,然後再去做判斷按了哪個按鈕,在做出動作。

上一篇
Day 16: PySide6 表格(QTableWidget) (二) 排序和常用功能
下一篇
Day18: PySide6 計時器(QTimer)
系列文
pythonGUI學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言