这是我的代码
app = QApplication(sys.argv)
loginWindow = loadUi('~/mainwindow.ui')
okconnect = loadUi('~/okconnect.ui')
def prueba2(test):
print(test + " Testing2")
def prueba(test):
print (test)
okconnect.show()
okconnect.getvmsButton.clicked.connect(lambda: prueba2(test))
loginWindow.show()
loginWindow.connectButton.clicked.connect(lambda: prueba("test"))
sys.exit(app.exec_())
当我按下"连接"按钮,打开一个新窗口,带一个按钮," getvmsButton",当我按下此按钮时,它在控制台中显示def prueba2(测试)中的打印行,但如果我关闭窗口,然后我再次点击连接按钮,再次打开窗口和" getvmsButton"再次按下,控制台显示2条消息而不是1.如果我重复此过程,将显示更多消息。
当我关闭并打开几次窗口时,我应该更改哪些只显示一条消息?
答案 0 :(得分:0)
当您用'x'关闭GUI时并不意味着您断开了按钮点击信号,因此,每次单击“连接”按钮时,loginWindow将创建一个新的button.clicked事件并保留旧事件。对此的快速解决方案是为“x”点击定义一个close事件。这里提供的只是一种关闭旧信号事件的方法。
from PyQt5.QtWidgets import QWidget
OKConnect(QWidget):
def __init__(self):
super().__init__()
self.okconnect = loadUi('~/okconnect.ui')
self.okconnect.closeEvent = self.closeEvent
def closeEvent(self, event):
print("testing2 closing")
# to close the old getvmsButton signals
self.okconnect.getvmsButton.disconnect()
# Here below is exactly your code
app = QApplication(sys.argv)
loginWindow = loadUi('~/mainwindow.ui')
okconnect = OKConnect()
def prueba2(test):
print(test + " Testing2")
def prueba(test):
print (test)
okconnect.show()
okconnect.getvmsButton.clicked.connect(lambda: prueba2(test))
loginWindow.show()
loginWindow.connectButton.clicked.connect(lambda: prueba("test"))
sys.exit(app.exec_())
我不确定您的.ui文件,代码可能不适用于您的。