PyQT5:如何将 QLineEdit 字符串从一个 class 传递到另一个?

PyQT5: How to pass QLineEdit string from one class to another?

我正在编写一个生成发票的应用程序。 我有两个 windows。在第一个中,我使用 QLineEdit 从用户那里收集数据(姓名、地址等)。然后我想把这个数据传给另一个class去开票。我该怎么做?

class FormularzFaktury(QDialog):
    def __init__(self, parent=None):
        super(FormularzFaktury, self).__init__(parent)

(...)
        nazwiskonabywcyLbl = QLabel('Imię i nazwisko/nazwa: ')
        self.nazwiskonabywcy = QLineEdit(self)
        uklad.addWidget(nazwiskonabywcyLbl, 2, 0)

(...)

    def dodajprodukty(self):
        self.DP = DodajProdukty()
        self.DP.show()

class DodajProdukty(QDialog):
    def __init__(self, parent=None):
        super(DodajProdukty, self).__init__(parent)

(...)
    def show_nazwiskonabywcy(self)
        nazwiskonabywcy=self.nazwiskonabywcy.text()
        print(nazwiskonabywcy)

如何将 self.nazwiskonabywcy.text() 从第一个 class 传递到第二个 class?

您可以将 self.nazwiskonabywcy 作为参数传递给 DodajProdukty,然后将其设置为自己的 self.nazwiskonabywcy,因此代码如下所示:

class FormularzFaktury(QDialog):
    def __init__(self, parent=None):
        super(FormularzFaktury, self).__init__(parent)

        nazwiskonabywcyLbl = QLabel('Imię i nazwisko/nazwa: ')
        self.nazwiskonabywcy = QLineEdit(self)
        uklad.addWidget(nazwiskonabywcyLbl, 2, 0)

    def dodajprodukty(self):
        self.DP = DodajProdukty(self.nazwiskonabywcy)
        self.DP.show()

class DodajProdukty(QDialog):
    def __init__(self, nazwiskonabywcy, parent=None):
        super(DodajProdukty, self).__init__(parent)
        self.nazwiskonabywcy = nazwiskonabywcy

    def show_nazwiskonabywcy(self)
        nazwiskonabywcy=self.nazwiskonabywcy.text()
        print(nazwiskonabywcy)

或者如果 self.nazwiskonabywcy 在实例化 DodajProdukty 时已经设置为正确的文本,您可以直接将值传递给新的 class,而不是传递整个 QLineEdit:

class FormularzFaktury(QDialog):
    def __init__(self, parent=None):
        super(FormularzFaktury, self).__init__(parent)

        nazwiskonabywcyLbl = QLabel('Imię i nazwisko/nazwa: ')
        self.nazwiskonabywcy = QLineEdit(self)
        uklad.addWidget(nazwiskonabywcyLbl, 2, 0)

    def dodajprodukty(self):
        self.DP = DodajProdukty(self.nazwiskonabywcy.text())
        self.DP.show()

class DodajProdukty(QDialog):
    def __init__(self, nazwiskonabywcy, parent=None):
        super(DodajProdukty, self).__init__(parent)
        self.nazwiskonabywcy = nazwiskonabywcy

    def show_nazwiskonabywcy(self)
        print(self.nazwiskonabywcy)