我有几个关于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()
最后,是否可以为我创建的3个按钮添加3个不同的工具提示?我看到有一个命令 - self.buttonBox.setToolTip("Buttons for life!")
,但这会导致所有3个按钮都有相同的工具提示。我可以个人化吗?
答案 0 :(得分:4)
是的,这是写信号连接的正确方法(你发现的其他语法确实是旧方法)。您可以在QDialogButtonBox
的pyqt文档中找到所有信号。不同的小部件和对象具有不同的信号。 QPushButton
&{39}和QDialogButtonBox
有不同的信号。
是的,close()
将关闭对话框。如果没有其他窗口打开,QApplication
将默认退出。但是,如果这是模式对话框,则通常需要使用accept
或reject
命令关闭对话框。这将通过调用函数提示是否使用Ok/Yes/Apply
按钮关闭了对话框,或者使用“否/取消”按钮关闭了对话框。按钮。
您可以为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
连接到accept
上的reject
和QDialog
个广告位/ p>
self.buttonBox.accepted.connect(self.accept)
self.buttonBox.rejected.connect(self.reject)
这样,您就不必手动将Ok
和Cancel
按钮连接到回调以关闭对话框。