Python 具有多个窗口的pyQt5程序
我正在尝试制作一个有多个窗口的程序,以便在点击按钮后打开下一个窗口。现在我在这里,第一个窗口工作正常,第二个窗口打开,但按钮不工作 编辑:当从第一个窗口打开窗口时,第二个窗口中的按钮不起任何作用,但是当类“second”被自己调用而不是从第一个窗口调用时,它起作用 以下是课堂上第一个窗口的重要部分:Python 具有多个窗口的pyQt5程序,python,pyqt5,Python,Pyqt5,我正在尝试制作一个有多个窗口的程序,以便在点击按钮后打开下一个窗口。现在我在这里,第一个窗口工作正常,第二个窗口打开,但按钮不工作 编辑:当从第一个窗口打开窗口时,第二个窗口中的按钮不起任何作用,但是当类“second”被自己调用而不是从第一个窗口调用时,它起作用 以下是课堂上第一个窗口的重要部分: 类Aloitus(QMainWindow): 定义初始化(自): super()。\uuuu init\uuuuu() self.InitAloitus() def InitAloitus(自我):
类Aloitus(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.InitAloitus()
def InitAloitus(自我):
self.button=QPushButton(“确定”,self)
自动按钮移动(200200)
self.button.clicked.connect(self.continue)
自设置几何体(600200500300)
self.show()
def继续(自我):
self.close()
下一个=第二个()
下一步
这是第二个窗口的类:
第二类(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.title=“Alkutiedot”
自顶=600
自左=200
自宽=500
自身高度=500
self.initWindow()
def初始化窗口(自):
self.button=QPushButton(“确定”,self)
自动按钮移动(100400)
self.button.clicked.connect(self.ok)
self.setWindowTitle(self.title)
self.setGeometry(self.top、self.left、self.width、self.height)
self.show()
def正常(自我):
self.close()
3件事:
\uuuuu init\uuuu
调用,它由构造函数调用next=Second()
更改为self.next=Second()
,以避免垃圾收集
class Aloitus(QMainWindow):
def __init__(self):
super().__init__()
self.InitAloitus()
def InitAloitus(self):
self.button=QPushButton("Ok",self)
self.button.move(200,200)
self.button.clicked.connect(self.continue2)
self.setGeometry(600,200,500,300)
self.show()
def continue2(self):
self.close()
self.next=Second()
#next.__init__()
class Second(QMainWindow):
def __init__(self):
super().__init__()
self.title="Alkutiedot"
self.top=600
self.left=200
self.width=500
self.height=500
self.initWindow()
def initWindow(self):
self.button=QPushButton("Ok", self)
self.button.move(100,400)
self.button.clicked.connect(self.ok)
self.setWindowTitle(self.title)
self.setGeometry(self.top, self.left, self.width, self.height)
self.show()
def ok(self):
print('close clicked')
self.close()
当你点击第二个窗口上的按钮时会发生什么?什么都没有。奇怪的是,当类“second”由它自己调用时,第二个窗口中的按钮实际上起作用,而不是从第一个窗口remove
next.\uuu init\uu()
Doself.next=second()
,否则第二个窗口将在显示之前被垃圾收集。谢谢!现在它起作用了。问题是我调用第二个窗口的方式