如何在另一个班级中使用一个班级的自变量

时间:2019-06-05 20:13:54

标签: python pyqt self

我对python和pyqt5都有些陌生,我基本上是在尝试创建一个窗口,让该窗口通过按钮打开另一个窗口,并让新窗口能够与旧窗口中的值进行通信(例如自变量定义列表或字典等)。

我希望使用两个单独的类来使代码井井有条,但是,我发现很难在这两个类中使用self。我尝试从另一个类中调用我感兴趣的方法,但是我需要在 init 方法中找到一个self.variable才能完成代码(有意义)。我从两个类创建了两个窗口,当按下窗口1中的按钮时,第二个窗口打开。

import csv
import sys
import time
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from functools import partial

class Window(QWidget):

    def __init__(self):
        super().__init__()
        self.title = "Window"
        self.left = 500
        self.top = 500
        self.width = 200
        self.height = 150

        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left,self.top,self.width,self.height)
        self.setFixedSize(self.width,self.height)

        layout2 = QGridLayout()
        label2 = QLineEdit()
        layout2.addWidget(label2)
        self.button2 = QPushButton("Enter")
        layout2.addWidget(self.button2)

        self.setLayout(layout2)
        self.show()
        self.Button()

    def Button(self):
        self.button2.clicked.connect()

class MainWindow(QWidget):

    def __init__(self):
        super().__init__()
        self.title = "Main Window"
        self.left = 300
        self.top = 300
        self.width = 400
        self.height = 300

        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left,self.top,self.width,self.height)
        self.setFixedSize(self.width,self.height)
        #self.setFixedWidth(self.width)

        layout1 = QGridLayout()
        label1 = QLineEdit()
        layout1.addWidget(label1)
        self.button1 = QPushButton("Push")
        layout1.addWidget(self.button1)

        self.button1.clicked.connect(self.onClick1)

        self.setLayout(layout1)
        self.show()

    def onClick1(self):
        Window()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MainWindow()
    sys.exit(app.exec_())

我想知道我是否需要继承或使继承发挥作用?唯一的问题是,我基本上已经从pyqt5类继承了所有类。我还注意到,我需要“窗口”中的“按钮”方法以使第二个窗口保持打开状态。我不知道这是否一定是我想要的,但是它现在可以使用。有人可以帮助我找出在两个类中的两个窗口之间传输数据的最佳方法。我正在使用QDialog进行辩论,或者正在研究继承问题。但是,如果您还有其他建议,我会全力以赴。在此示例中,也许可以帮助我找到一种在第二个窗口行编辑中键入内容并将其显示在另一个窗口上的方法。或类似的东西。

1 个答案:

答案 0 :(得分:0)

我自己弄清楚了。 可以说,在我的主窗口中,我有: self.variable

如果我想在另一个类中使用它,则从第一个类中,我将这样调用新类: NewWindow(self.variable)

然后,NewWindow init 方法将如下所示:

def __init __(自身,变量):

super().__ init __()

self.variable =变量

然后,您应该能够在新类中引用此变量,并使其对旧类也更改为 self.variable