PyQt5 - QMessageBox



QMessageBox 是一个常用的模态对话框,用于显示一些信息消息,并可以选择性地要求用户通过点击其上的任何一个标准按钮来响应。每个标准按钮都有一个预定义的标题、一个角色和一个预定义的十六进制数字。

与 QMessageBox 类相关的重要的方法和枚举在下面的表格中给出:

序号 方法及说明
1

setIcon()

显示与消息严重性相对应的预定义图标

  • 提问
  • 信息
  • 警告
  • 严重错误
2

setText()

设置要显示的主消息文本

3

setInformativeText()

显示附加信息

4

setDetailText()

对话框显示“详细信息”按钮。点击此按钮后显示此文本。

5

setTitle()

显示对话框的自定义标题

6

setStandardButtons()

要显示的标准按钮列表。每个按钮都与以下内容相关联:

QMessageBox.Ok 0x00000400

QMessageBox.Open 0x00002000

QMessageBox.Save 0x00000800

QMessageBox.Cancel 0x00400000

QMessageBox.Close 0x00200000

QMessageBox.Yes 0x00004000

QMessageBox.No 0x00010000

QMessageBox.Abort 0x00040000

QMessageBox.Retry 0x00080000

QMessageBox.Ignore 0x00100000

7

setDefaultButton()

将按钮设置为默认按钮。如果按下 Enter 键,则会发出 clicked 信号。

8

setEscapeButton()

将按钮设置为按下 Escape 键时被视为已点击。

示例

在下面的示例中,顶级窗口上按钮的点击信号与连接的函数相连,该函数显示消息框对话框。

msg = QMessageBox()
msg.setIcon(QMessageBox.Information)
msg.setText("This is a message box")
msg.setInformativeText("This is additional information")
msg.setWindowTitle("MessageBox demo")
msg.setDetailedText("The details are as follows:")

setStandardButton() 函数显示所需的按钮。

msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)

buttonClicked() 信号连接到一个槽函数,该函数识别信号源的标题。

msg.buttonClicked.connect(msgbtn)

示例的完整代码如下:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

def window():
   app = QApplication(sys.argv)
   w = QWidget()
   b = QPushButton(w)
   b.setText("Show message!")
   
   b.move(100,50)
   b.clicked.connect(showdialog)
   w.setWindowTitle("PyQt MessageBox demo")
   w.show()
   sys.exit(app.exec_())

def showdialog():
   msg = QMessageBox()
   msg.setIcon(QMessageBox.Information)
   
   msg.setText("This is a message box")
   msg.setInformativeText("This is additional information")
   msg.setWindowTitle("MessageBox demo")
   msg.setDetailedText("The details are as follows:")
   msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
   msg.buttonClicked.connect(msgbtn)

   retval = msg.exec_()

def msgbtn(i):
   print ("Button pressed is:",i.text())

if __name__ == '__main__':
   window()

以上代码产生以下输出。单击主窗口的按钮时,将弹出消息框。

QMessageBox Output

如果单击消息框上的“确定”或“取消”按钮,则会在控制台上产生以下输出:

Button pressed is: OK
Button pressed is: Cancel
广告
© . All rights reserved.