pyQt5程序有多个窗口

时间:2018-04-19 14:27:46

标签: python pyqt5

我正在尝试制作一个包含多个窗口的程序,以便在点击按钮后打开下一个窗口。现在我在这一点上,第一个窗口工作正常,第二个窗口打开,但按钮不起作用。

编辑:第二个窗口中的按钮在从第一个窗口打开窗口时没有做任何事情,但是当班级"秒"它是自己调用的,而不是从第一个窗口调用,它可以工作。

以下是第一个窗口类的重要部分:

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()

1 个答案:

答案 0 :(得分:1)

3件事:

  1. 将函数的名称更改为" continue" continue is taken

  2. 删除显式__init__调用,由构造函数调用。

  3. 将行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()