如何更改QMessageBox中的按钮顺序

2024-09-10 21:46:44 发布

您现在位置:Python中文网/ 问答频道 /正文

代码创建一个QDialog窗口,其中包含一个QPushButton。单击该按钮将显示带有三个按钮的QMessageBox窗口。有没有办法重新安排按钮的顺序?在

enter image description here

from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])

class Dialog(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)

        self.resize(300, 100)
        self.setLayout(QtGui.QVBoxLayout())

        button = QtGui.QPushButton('Submit')
        button.clicked.connect(self.onclick)
        self.layout().addWidget(button)

    def onclick(self):
        self.close()
        messagebox = QtGui.QMessageBox(QtGui.QMessageBox.Warning, "Title text", "body text", buttons = QtGui.QMessageBox.Ok |  QtGui.QMessageBox.No |  QtGui.QMessageBox.Cancel, parent=self)
        messagebox.setDefaultButton(QtGui.QMessageBox.No)
        exe = messagebox.exec_()
        print exe

dialog = Dialog()
dialog.show()
app.exec_()

Tags: textselfappinitdefbutton按钮parent
1条回答
网友
1楼 · 发布于 2024-09-10 21:46:44

QMessageBox.addButton()重载可用于按钮排序。默认顺序因平台而异。调用exec()后使用QMessageBox.clickedButton()查询使用了什么按钮。在

enter image description here

from PyQt4 import QtGui, QtCore
import sys
app = QtGui.QApplication([])

class Dialog(QtGui.QDialog):
    def __init__(self, parent=None):
        super(Dialog, self).__init__(parent)

        self.resize(300, 100)
        self.setLayout(QtGui.QVBoxLayout())

        button = QtGui.QPushButton('Submit')
        button.clicked.connect(self.onclick)
        self.layout().addWidget(button)

    def onclick(self):
        self.close()
        message = "<font size = 5 color = gray > Rich Html Title </font> <br/><br/>The clickable link <a href='http://www.google.com'>Google.</a> The lower and upper case text."
        messagebox = QtGui.QMessageBox(QtGui.QMessageBox.Warning, "title", message, parent=self)
        messagebox.addButton("ResetRole Left Most", QtGui.QMessageBox.ResetRole)
        messagebox.addButton("ApplyRole Left", QtGui.QMessageBox.ApplyRole)
        messagebox.addButton("RejectRole Right", QtGui.QMessageBox.RejectRole)
        messagebox.addButton("NoRole Right Most", QtGui.QMessageBox.NoRole)
        exe = messagebox.exec_()
        print 'exe: %s  clickedButton: %s'%(exe, messagebox.clickedButton())

dialog = Dialog()
dialog.show()     
app.exec_()

相关问题 更多 >