PyQT PySide 解决无法使用self.close()方法
背景
我为了给项目解耦,把主程序(一个类)的打开用一个方法封装了
windowStarter.py
import windows.interfaceWindow
import windows.loginWindow
def StartInterfaceWindow():
window = windows.interfaceWindow.InterfaceWindow()
return window
def StartLoginWindow():
window = windows.loginWindow.LoginWindow()
return window
# 在这另外定义了一个外部调用的关闭方法
def closeLoginWindow(window):
window.close()
return window
同时方法在main.py调用,self.close()方法有效
main.py
if __name__ == '__main__':
app = QApplication(sys.argv)
# 读取本地配置文件
try:
window = windowStarter.StartLoginWindow()
# 有效 window.close()
except Exception as e:
print("error try" + str(e))
finally:
print("end")
sys.exit(app.exec())
lohinWindow
if window:
print("aa")
# 无效self.close()
# 有效,需要传入窗口类self自身对象
windowStarter.closeLoginWindow(self)
总结
具体原因还不是很清楚。