簡體   English   中英

多窗口的pyQt5程序

[英]pyQt5 program with multiple windows

我正在嘗試制作一個具有多個窗口的程序,以便在單擊按鈕后打開下一個窗口。 現在我處於第一個窗口工作正常而第二個窗口打開但按鈕不起作用的位置。

編輯:當從第一個窗口打開窗口時,第二個窗口中的按鈕不執行任何操作,但是當類“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__()

這是第二個窗口的類:

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

3件事:

  1. 將函數的名稱更改為“continue”之外的其他名稱continue 被采用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM