我有几个关于qDialogButtonBox的问题。虽然我的代码仍然有效,但我相信有几个部分可以更好地改进/我在网上找不到多少信息。
class testDialog(QtGui.QDialog):
def __init_(self, parent=None):
...
self.init_ui()
self.signals_connection()
def init_ui(self):
...
self.buttonBox = QtGui.QDialogButtonBox()
self.buttonBox.addButton("Help", QtGui.QDialogButtonBox.HelpRole)
self.buttonBox.addButton("Apply", QtGui.QDialogButtonBox.AcceptRole)
self.buttonBox.addButton("Cancel", QtGui.QDialogButtonBox.RejectRole)
#
def signals_connection(self):
self.test_random.clicked.connect(self.test_rand)
# Is this the latest/correct way to write it?
self.buttonBox.accepted.connect(self.test_apply)
self.buttonBox.rejected.connect(self.test_cancel)
self.buttonBox.helpRequested.connect(self.test_help)
def test_apply(self):
print "I am clicking on Apply"
def test_cancel(self):
print "I am clicking on Cancel"
self.close()
def test_help(self):
print "I am clicking for Help!"
我的问题如下:
buttonBox
编写的行(尽管代码仍然有效)对于我为self.test_random
编写的信号来说是完全不同的,而且我无法在网上找到类似的qdialogbuttonbox。我发现了另一种风格-- self.connect(self.buttonBox, QtCore.SIGNAL("accepted()"), self, QtCore.SLOT("accept()"))
,但我认为那是旧风格??否则,写它的正确方法应该是什么?test_cancel()
函数中,编写self.close()
是关闭应用程序的最佳方法吗?我运行程序的方式如下:
dialog = testDialog();dialog.show()
self.buttonBox.setToolTip("Buttons for life!")
,但这将导致所有3个按钮都有相同的工具提示。我能单独做吗?发布于 2016-09-29 17:12:59
QDialogButtonBox
的pyqt文档中找到所有信号。不同的小部件和对象有不同的信号。QPushButton
和QDialogButtonBox
的信号不同。close()
将关闭对话框。默认情况下,如果没有其他窗口打开,QApplication
将退出。但是,如果这是一个模态对话框,则通常希望使用accept
或reject
命令关闭对话框。这将提醒调用函数对话框是用Ok/Yes/Apply
按钮关闭还是用No/Cancel
按钮关闭。QDialogButtonBox
中的不同按钮设置不同的工具提示。您只需要获得对要设置工具提示的特定按钮的引用。例如
self.buttonBox.button(QDialogButtonBox.Help).setToolTip('Help Tooltip')
self.buttonBox.button(QDialogButtonBox.Ok).setToolTip('Apply Tooltip')
或者你可以循环浏览所有的按钮
for button in self.buttonBox.buttons():
if button.text() == 'Help':
button.setToolTip('Help Tooltip')
elif button.text() == 'Apply':
button.setToolTip('Apply Tooltip')
此外,您还可以将accepted
和rejected
信号从QDialogButtonBox
连接到QDialog
上的accept
和reject
插槽。
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
这样,您就不必手动将Ok
和Cancel
按钮连接到回调以关闭对话框。
https://stackoverflow.com/questions/39759600
复制相似问题