我收到了一些关于qDialogButtonBox的问题。虽然我的代码仍然有效,我认为有几个部分,可以得到更好的精/我没有找到多少信息网上PyQt - 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!"
我的问题如下:
- 在我的功能 - signals_connection(),我写了 的
buttonBox
(虽然代码仍然有效),是因为我写的self.test_random
信号完全不同 ,我 无法找到任何类似的在线的qdialogbuttonbox ..有 线是我拥有的另一种风格und -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个按钮具有相同的工具提示。我可以把它作为个人吗?
感谢您的描述性信息。由于我没有使用QDialogButtonBox给出的标准按钮,而是使用'addButton'手动创建按钮,所以似乎无法使用第一种方法来设置您提到的工具提示。然而,如果我通过文本循环它,它会起作用,这非常棒!通过使用'self.close()'或'self.buttonBox.rejected.connect(self.reject)',尽管你已经提到应用程序仍然会关闭,但是它会存在于内存中的任何位置吗? – dissidia
@dissidia是的,如果您仍然有对该对话框的引用,那么对话框对象仍然存在,您仍然可以访问它的子控件和小部件。如果你删除了对它的引用,它最终会收集垃圾并停止存在。 –
什么是最好的方式来清理应用程序? – dissidia