我正在尝试制作一个包含多个窗口的程序,以便在点击按钮后打开下一个窗口。现在我在这一点上,第一个窗口工作正常,第二个窗口打开,但按钮不起作用。
编辑:第二个窗口中的按钮在从第一个窗口打开窗口时没有做任何事情,但是当班级"秒"它是自己调用的,而不是从第一个窗口调用,它可以工作。
以下是第一个窗口类的重要部分:
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.continue)
self.setGeometry(600,200,500,300)
self.show()
def continue(self):
self.close()
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):
self.close()
答案 0 :(得分:1)
3件事:
将函数的名称更改为" continue" continue is taken
删除显式__init__
调用,由构造函数调用。
将行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()