多窗口pyQt5程序

2024-10-01 15:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

在编辑:按钮在第二个窗口中,当窗口从第一个窗口打开时,它什么也不做,但是当类“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.continue)
    self.setGeometry(600,200,500,300)
    self.show()
def continue(self):

    self.close()
    next=Second()
    next.__init__()

下面是第二个窗口的类:

^{pr2}$

Tags: self程序编辑initdefbutton按钮class
1条回答
网友
1楼 · 发布于 2024-10-01 15:29:20

三件事:

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

相关问题 更多 >

    热门问题