QMessageBox
訊息視窗可以適時提供訊息給使用者, 更是開發者除錯的好工具. PyQt5的訊息視窗有點囉嗦, 需使用如下方式顯示
from PyQt5.QtWidgets import QMessageBox
msg=QMessageBox()
msg.setWindowTitle("Mahaljsp")
msg.setText("Hello World")
msg.exec()

使用者自訂按鈕
使用都可以自訂按鈕, 再由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")
