from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QMainWindow
import sys
class wid(QWidget):
def __init__(self):
super().__init__()
self.done = False
self.layoutt = QVBoxLayout()
self.button = QPushButton("Click me")
self.layoutt.addWidget(self.button)
self.setLayout(self.layoutt)
self.button.clicked.connect(self.click)
def click(self):
m = MainWindow()
m.show()
self.destroy()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.button = QPushButton("test")
self.setCentralWidget(self.button)
app = QApplication(sys.argv)
m = wid()
m.show()
app.exec()
我期望当我按下 wid 类中的按钮时,小部件将被销毁,这可以正常工作,但我也期望 MainWindow 类出现。 这将用于一个简单的登录系统,其中登录由执行一些后端操作的小部件管理,如果一切正确,它应该销毁自身,然后授予对 QMainWindow 主应用程序的访问权限。 有人可以帮我提前谢谢你吗?
可能有更好的方法来实现你想要的,但这个简单的修复将使示例代码按预期工作。
def click(self):
global m
m = MainWindow()
m.show()
self.deleteLater()
如果你想从局部作用域分配给全局变量,你必须使用
global
。deleteLater()
比使用 destroy()
更好