如何控制使用setDetailedText的PyQt / PySide QMessageBox上的“显示详细信息...”按钮的位置

时间:2014-01-23 21:05:13

标签: python-2.7 pyqt pyside qmessagebox

当我在PySide中的QMessageBox上使用setDetailedText时,“显示详细信息...”按钮将其置于“确定”和“取消”按钮之间。有没有办法控制按钮的位置?我喜欢它在documentation中的显示方式,但我希望看到不同的按钮,如Ok和Cancel。我希望“显示详细信息”按钮位于左侧,“确定”和“取消”位于右侧。

我完全理解我可以通过基于QDialog的完全自定义GUI来实现这一点,但我对MessageBox是否可以做我想要的事情感兴趣。

这是我的例子:

import sys
from PySide import QtCore
from PySide import QtGui


class MyForm(QtGui.QMainWindow):
    def __init__(self, parent=None, args=()):
        super(MyForm, self).__init__(parent)

        self.centralLayout = QtGui.QVBoxLayout()
        self.centralWidget = QtGui.QWidget()
        self.centralWidget.setLayout(self.centralLayout)
        self.setCentralWidget(self.centralWidget)

        self.button = QtGui.QPushButton()
        self.button.setText("Push Me")
        self.button.clicked.connect(self.show_message)
        self.centralLayout.addWidget(self.button)

    def show_message(self):

        msg = QtGui.QMessageBox()
        msg.setWindowTitle("Here's a Title")
        msg.setText("Here's some text")
        msg.setInformativeText("Here's some more text")
        msg.setDetailedText("Here's a whole bunch more detailed text than you might possibly want to know if you're interested.")
        msg.setStandardButtons(QtGui.QMessageBox.Cancel | QtGui.QMessageBox.Ok)
        msg.setDefaultButton(QtGui.QMessageBox.Ok)
        ret = msg.exec_()

        app.exit()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    MyApp = MyForm()
    MyApp.show()
    sys.exit(app.exec_())

0 个答案:

没有答案