PyQT PySide 解决无法使用self.close()方法

543 阅读1分钟

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)

总结

具体原因还不是很清楚。