当我在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_())