python - 如何从自定义的 QMessageBox 中捕获按钮点击?

标签 python pyqt pyside

如何修改下面自定义 QMessageBox 的代码,以便了解用户点击的是"is"还是“否”?

from PySide import QtGui, QtCore

# Create a somewhat regular QMessageBox
msgBox = QtGui.QMessageBox( QtGui.QMessageBox.Question, "My title", "My text.", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No )

# Get the layout
question_layout = msgBox.layout()

# Additional widgets to add to the QMessageBox
qlabel_workspace_project = QtGui.QLabel('Some random data window:')
qtextedit_workspace_project = QtGui.QTextEdit()
qtextedit_workspace_project.setReadOnly(True)

# Add the new widgets
question_layout.addWidget(qlabel_workspace_project,question_layout.rowCount(), 0, 1, question_layout.columnCount() )
question_layout.addWidget(qtextedit_workspace_project,question_layout.rowCount(), 0, 1, question_layout.columnCount() )

# Show widget
msgBox.show()

最佳答案

您应该使用exec_ 方法而不是show,所有从QDialog 继承的小部件都具有:

http://doc.qt.io/qt-4.8/qmessagebox.html#exec

此方法会阻塞,直到关闭消息框并返回结果:

result = msgBox.exec_()
if result == QtGui.QMessageBox.Yes:
    # do yes-action
else:
    # do no-action

关于python - 如何从自定义的 QMessageBox 中捕获按钮点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25570194/

相关文章:

python - 如何在一条sql语句中插入多个ID?

python - 如何确定是谁发出的信号?

python - QML 兼容多线程/异步调用吗?

python - PYSide/PyQt Qtreewidget字体颜色

python - 使用 pyside 初始化一个空白的 QImage

python - Pygame 在 blitting 期间返回锁定错误

python - 如何为 REST Api 功能设置 Python

python - PyQt 允许枚举值和字符串

Python 正则表达式 - 了解匹配和搜索之间的区别

python - QTreeWidget 选择第一项