就像您在评论中要求的那样,这里是利用函数连接所有信号的示意性方法和方法setupUi
。
class MainWindow(QtGui.QMainWindow) :
def __init__(self) :
QtGui.QMainWindow.__init__(self)
self.ui.setupUi(self)
# Some code
self.connectAllSignals()
def connectAllSignals(self) :
self.someWidget.clicked.connect(self.someFunction)
self.someAction.triggered.connect(self.otherFunction)
# All the other signals
def disconnectAllSignals(self) :
try :
self.someWidget.clicked.disconnect()
self.someAction.triggered.disconnect()
# All the other signals
except :
print("Something went wrong. Check your code.")
pass
def newSession(self) :
self.ui.setupUi(self)
self.disconnectAllSignals()
self.connectAllSignals()
# Do whatever it takes
通过这种方式,您可以确保您只有信号的初始设置,并且所有动态添加的连接都已断开。在该方法disconnectAllSignals
中,请确保所有小部件都存在并且所有信号在您调用它时至少有一个连接。如果您动态调用了新的小部件,您应该考虑newSession
在调用后在 th 方法中删除它们connectAllSignals
。