如何使用Python和PyQt5将值从行编辑转换为另一个窗口的行编辑?

时间:2019-08-18 13:03:44

标签: python-3.x pyqt5

我需要什么

我需要创建一个简单的项目,该项目可以将一个窗口的价值带到另一个窗口

我的研究成果:

因此,我为两个窗口创建了两个类,然后彼此连接,因此,当我单击按钮时,它将从第一个窗口获取值,然后打开另一个窗口,但该值=空,因为clickMethod什么都不返回。

下面是我的代码:

import sys 
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QWidget, QLabel, QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize    

class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(320, 140))    
        self.setWindowTitle("First Window")

        self.nameLabel = QLabel(self)
        self.nameLabel.setText('1st:')
        self.line = QLineEdit(self)

        self.line.move(80, 20)
        self.line.resize(200, 32)
        self.nameLabel.move(20, 20)

        pybutton = QPushButton('OK', self)

        pybutton.clicked.connect(self.second_wind)  #connect button to open second window
        pybutton.clicked.connect(self.clickMethod)
        pybutton.resize(200,32)
        pybutton.move(80, 60)        

    def clickMethod(self):
        value =self.line.text() #take value from the line edit
        return value

    def second_wind(self):    #object from secod_window class
        self.SW = Second_Window()
        self.SW.show()




class Second_Window(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.setMinimumSize(QSize(320, 140))
        self.setWindowTitle("Second Window")
        self.nameLabel = QLabel(self)
        self.nameLabel.setText('Name:')
        self.line = QLineEdit(self)

        self.line.move(80, 20)
        self.line.resize(200, 32)
        self.nameLabel.move(20, 20)
        self.f = MainWindow()        #make object from MainWindow class to execute clickMethod() to reutrn value
        a=self.f.clickMethod()
        print(a)




if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit( app.exec_() )

我希望Clickmethod返回值 但什么也没返回

1 个答案:

答案 0 :(得分:1)

尝试一下:

import sys 
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QWidget, QLabel, QLineEdit
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import QSize    


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(320, 140))    
        self.setWindowTitle("First Window")

        self.nameLabel = QLabel(self)
        self.nameLabel.setText('1st:')
        self.line = QLineEdit(self)

        self.line.move(80, 20)
        self.line.resize(200, 32)
        self.nameLabel.move(20, 20)

        pybutton = QPushButton('OK', self)

        pybutton.clicked.connect(self.second_wind)  
#        pybutton.clicked.connect(self.clickMethod)
        pybutton.resize(200,32)
        pybutton.move(80, 60)        

#    def clickMethod(self):
#        value =self.line.text() 
#        return value

    def second_wind(self):    
        text = self.line.text()                                    # +++
        self.SW = Second_Window(text)                              # +++ (text)
        self.SW.show()


class Second_Window(QMainWindow):
    def __init__(self, text):                                      # +++ (text)
        QMainWindow.__init__(self)
        self.text = text                                           # +

        self.setMinimumSize(QSize(320, 140))
        self.setWindowTitle("Second Window")
        self.nameLabel = QLabel(self)
        self.nameLabel.setText('Name:')
        self.line = QLineEdit(self)

        self.line.move(80, 20)
        self.line.resize(200, 32)
        self.nameLabel.move(20, 20)

#        self.f = MainWindow()        
#        a=self.f.clickMethod()
        self.line.setText(self.text)                                # +
        print(self.text)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()
    sys.exit( app.exec_() )

enter image description here