訊息視窗

      在〈訊息視窗〉中尚無留言

QMessageBox

訊息視窗可以適時提供訊息給使用者, 更是開發者除錯的好工具. PyQt5的訊息視窗有點囉嗦, 需使用如下方式顯示

from PyQt5.QtWidgets import QMessageBox
msg=QMessageBox()
msg.setWindowTitle("Mahaljsp")
msg.setText("Hello World")
msg.exec()

qmessagebox_1

使用者自訂按鈕

使用都可以自訂按鈕, 再由msg.exec()傳回按下的結果, 如下所示

msg=QMessageBox()
msg.setWindowTitle("Mahaljsp")
msg.setText("Hello World")
msg.addButton(QMessageBox.Ok)
msg.addButton(QMessageBox.Cancel)
result=msg.exec()
if result==QMessageBox.Ok:
    print("Ok")
elif result==QMessageBox.Cancel:
    print("Cancel")

改良版訊息視窗

PyQt5的訊息視窗真的不好用, 所以本人進行改良.

首先新增如下class MessageBox類別. 並新增一個show()方法. 為什麼要 show()呢. 因為show()會傳回是那一個按鈕被按下. 若沒有show()的話, 只能在 __init__(self)啟動視窗. 但別忘了, 建構子是不能有傳回值的. 所以就無法得知是那個按鈕被按下

class MessageBox():
    @staticmethod
    def show(msg, title='', btns=None):
        dialog=QMessageBox()
        dialog.setWindowTitle(title)
        dialog.setText(str(msg))
        if btns is not None:
            for btn in btns:
                dialog.addButton(btn)
        return dialog.exec()

然後在需要訊息視窗的地方, 撰寫如下代碼即可

result=MessageBox.show("Hello","Mahaljsp",btns=(QMessageBox.Ok, QMessageBox.Cancel))
if result==QMessageBox.Ok:
    print("Ok")
elif result==QMessageBox.Cancel:
    print("Cancel")

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *