Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有多个窗口的pyQt5程序_Python_Pyqt5 - Fatal编程技术网

Python 具有多个窗口的pyQt5程序

Python 具有多个窗口的pyQt5程序,python,pyqt5,Python,Pyqt5,我正在尝试制作一个有多个窗口的程序,以便在点击按钮后打开下一个窗口。现在我在这里,第一个窗口工作正常,第二个窗口打开,但按钮不工作 编辑:当从第一个窗口打开窗口时,第二个窗口中的按钮不起任何作用,但是当类“second”被自己调用而不是从第一个窗口调用时,它起作用 以下是课堂上第一个窗口的重要部分: 类Aloitus(QMainWindow): 定义初始化(自): super()。\uuuu init\uuuuu() self.InitAloitus() def InitAloitus(自我):

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

编辑:当从第一个窗口打开窗口时,第二个窗口中的按钮不起任何作用,但是当类“second”被自己调用而不是从第一个窗口调用时,它起作用

以下是课堂上第一个窗口的重要部分:

类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件事:

  • 将函数名称更改为“continue”以外的其他名称

  • 删除显式的
    \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()
    Do
    self.next=second()
    ,否则第二个窗口将在显示之前被垃圾收集。谢谢!现在它起作用了。问题是我调用第二个窗口的方式