我收到了一些關於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