Python 如何使用另一个py脚本获取pyqt中文本框的输入

Python 如何使用另一个py脚本获取pyqt中文本框的输入,python,pyqt5,Python,Pyqt5,我有这两个脚本。首先包含使用pyqt5的ui,这包含一些文本框和按钮。第二个包含按钮的功能(我指的是它的功能)。现在我只想在终端上显示文本框中写的内容。问题是我无法使用第二个py在文本框中获取/打印/显示输入文本。我有这个按钮(上传按钮),当点击时,它必须在终端上显示这个文本 我已尝试将第二个py导入第一个py。然后我接上按钮。 butUpld.clicked.connect(py2.up) 对于第二个py,我还将其连接到第一个py This is the first py file name

我有这两个脚本。首先包含使用pyqt5的ui,这包含一些文本框和按钮。第二个包含按钮的功能(我指的是它的功能)。现在我只想在终端上显示文本框中写的内容。问题是我无法使用第二个py在文本框中获取/打印/显示输入文本。我有这个按钮(上传按钮),当点击时,它必须在终端上显示这个文本

我已尝试将第二个py导入第一个py。然后我接上按钮。 butUpld.clicked.connect(py2.up)

对于第二个py,我还将其连接到第一个py

This is the first py file name py1.py

import os, glob, sys, time
import py2
from PyQt5.Qt import QApplication, QClipboard, QUrl
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QMainWindow, QWidget, QPlainTextEdit,   QLabel, QGridLayout, QPushButton, QLineEdit, QTextEdit, QMessageBox, QComboBox, QTabWidget, QFormLayout, QHBoxLayout, QRadioButton, QCheckBox, QVBoxLayout, QFileDialog, QButtonGroup
from PyQt5.QtCore import pyqtSlot, Qt

qt_app = QApplication(sys.argv)

class Layoutexe(QTabWidget):
    def __init__(self, parent = None):
        super(Layoutexe, self).__init__(parent)
        self.tab1 = QWidget()
        self.tab2 = QWidget()

        self.addTab(self.tab1," ")
        self.addTab(self.tab2," ")
        self.tab1UI()
        self.tab2UI()
        self.setWindowTitle(" ")
        self.setFixedSize(900,1000)

    def tab1UI(self):
        vbox = QVBoxLayout()
        hbox = QHBoxLayout()
        hbox1 = QHBoxLayout()
        hbox2 = QHBoxLayout()
        hbox3 = QHBoxLayout()

        labelPath = QLabel("PATH:")
        tboxPath = QLineEdit(self)
        butSrch = QPushButton("Search", self)
        butClr = QPushButton("Clear", self)
        hbox.addStretch()
        hbox.addWidget(labelPath)
        hbox.addWidget(tboxPath)
        hbox.addWidget(butSrch)
        hbox.addStretch()
        hbox.addWidget(butClr)
        vbox.addLayout(hbox)

        radbutLst = QRadioButton("Latest")
        radbutMnl = QRadioButton("Manual")
        hbox1.addWidget(radbutLst)
        hbox1.addWidget(radbutMnl)
        hbox1.addStretch()
        vbox.addLayout(hbox1)

        labelEV = QLabel("Event:")
        tboxEV = QLineEdit(self)
        hbox2.addWidget(labelEV)
        hbox2.addWidget(tboxEV)
        hbox2.addStretch()
        vbox.addLayout(hbox2)

        butUpld = QPushButton("UPLOAD", self)
        hbox3.addStretch()
        hbox3.addWidget(butUpld)
        hbox3.addStretch()
        vbox.addLayout(hbox3)

        vbox.addStretch()
        self.tab1.setLayout(vbox)

    butUpld.clicked.connect(py2.up)

    def tab2UI(self):
        vbox = QVBoxLayout()
        layout = QHBoxLayout()

    def run(self):
        self.show()
        qt_app.exec_()

app = Layoutexe()
app.run()



this the second py file named py2.py

import os, glob
import py1

def up():
    a = gui.rep.tab1U.tboxEV
    print(a.text())
试试看:

py1.py

import sys
#import os, glob, time

from PyQt5.Qt import QApplication, QClipboard, QUrl
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QMainWindow, QWidget, QPlainTextEdit,   QLabel, QGridLayout, QPushButton, QLineEdit, QTextEdit, QMessageBox, QComboBox, QTabWidget, QFormLayout, QHBoxLayout, QRadioButton, QCheckBox, QVBoxLayout, QFileDialog, QButtonGroup
from PyQt5.QtCore import pyqtSlot, Qt

import py2         

qt_app = QApplication(sys.argv)

class Layoutexe(QTabWidget):
    def __init__(self, parent = None):
        super(Layoutexe, self).__init__(parent)

        self.tab1 = QWidget()
        self.tab2 = QWidget()

        self.addTab(self.tab1," ")
        self.addTab(self.tab2," ")
        self.tab1UI()
        self.tab2UI()
        self.setWindowTitle(" ")
        self.setFixedSize(900,1000)

    def tab1UI(self):
        vbox = QVBoxLayout()
        hbox = QHBoxLayout()
        hbox1 = QHBoxLayout()
        hbox2 = QHBoxLayout()
        hbox3 = QHBoxLayout()

        labelPath = QLabel("PATH:")
        tboxPath = QLineEdit(self)
        butSrch = QPushButton("Search", self)
        butClr = QPushButton("Clear", self)
        hbox.addStretch()
        hbox.addWidget(labelPath)
        hbox.addWidget(tboxPath)
        hbox.addWidget(butSrch)
        hbox.addStretch()
        hbox.addWidget(butClr)
        vbox.addLayout(hbox)

        radbutLst = QRadioButton("Latest")
        radbutMnl = QRadioButton("Manual")
        hbox1.addWidget(radbutLst)
        hbox1.addWidget(radbutMnl)
        hbox1.addStretch()
        vbox.addLayout(hbox1)

        labelEV = QLabel("Event:")
        self.tboxEV = QLineEdit(self)
        hbox2.addWidget(labelEV)
        hbox2.addWidget(self.tboxEV)
        hbox2.addStretch()
        vbox.addLayout(hbox2)

        butUpld = QPushButton("UPLOAD", self)
        hbox3.addStretch()
        hbox3.addWidget(butUpld)
        hbox3.addStretch()
        vbox.addLayout(hbox3)

        vbox.addStretch()
        self.tab1.setLayout(vbox)

        butUpld.clicked.connect(lambda _, s=self: py2.up(s))             # +++

    def tab2UI(self):
        vbox = QVBoxLayout()
        layout = QHBoxLayout()

    def run(self):
        self.show()
        qt_app.exec_()

app = Layoutexe()
app.run()
#import os, glob
#import py1

def up(self):
#    a = gui.rep.tab1U.tboxEV
    a = self.tboxEV
    print(a.text())
py2.py

import sys
#import os, glob, time

from PyQt5.Qt import QApplication, QClipboard, QUrl
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import QMainWindow, QWidget, QPlainTextEdit,   QLabel, QGridLayout, QPushButton, QLineEdit, QTextEdit, QMessageBox, QComboBox, QTabWidget, QFormLayout, QHBoxLayout, QRadioButton, QCheckBox, QVBoxLayout, QFileDialog, QButtonGroup
from PyQt5.QtCore import pyqtSlot, Qt

import py2         

qt_app = QApplication(sys.argv)

class Layoutexe(QTabWidget):
    def __init__(self, parent = None):
        super(Layoutexe, self).__init__(parent)

        self.tab1 = QWidget()
        self.tab2 = QWidget()

        self.addTab(self.tab1," ")
        self.addTab(self.tab2," ")
        self.tab1UI()
        self.tab2UI()
        self.setWindowTitle(" ")
        self.setFixedSize(900,1000)

    def tab1UI(self):
        vbox = QVBoxLayout()
        hbox = QHBoxLayout()
        hbox1 = QHBoxLayout()
        hbox2 = QHBoxLayout()
        hbox3 = QHBoxLayout()

        labelPath = QLabel("PATH:")
        tboxPath = QLineEdit(self)
        butSrch = QPushButton("Search", self)
        butClr = QPushButton("Clear", self)
        hbox.addStretch()
        hbox.addWidget(labelPath)
        hbox.addWidget(tboxPath)
        hbox.addWidget(butSrch)
        hbox.addStretch()
        hbox.addWidget(butClr)
        vbox.addLayout(hbox)

        radbutLst = QRadioButton("Latest")
        radbutMnl = QRadioButton("Manual")
        hbox1.addWidget(radbutLst)
        hbox1.addWidget(radbutMnl)
        hbox1.addStretch()
        vbox.addLayout(hbox1)

        labelEV = QLabel("Event:")
        self.tboxEV = QLineEdit(self)
        hbox2.addWidget(labelEV)
        hbox2.addWidget(self.tboxEV)
        hbox2.addStretch()
        vbox.addLayout(hbox2)

        butUpld = QPushButton("UPLOAD", self)
        hbox3.addStretch()
        hbox3.addWidget(butUpld)
        hbox3.addStretch()
        vbox.addLayout(hbox3)

        vbox.addStretch()
        self.tab1.setLayout(vbox)

        butUpld.clicked.connect(lambda _, s=self: py2.up(s))             # +++

    def tab2UI(self):
        vbox = QVBoxLayout()
        layout = QHBoxLayout()

    def run(self):
        self.show()
        qt_app.exec_()

app = Layoutexe()
app.run()
#import os, glob
#import py1

def up(self):
#    a = gui.rep.tab1U.tboxEV
    a = self.tboxEV
    print(a.text())

成功了!非常感谢。你能解释一下为什么把tboxEV=QLineEdit(self)改为self.tboxEV=QLineEdit(self),我是说区别。为什么要使用butUpld.clicked.connect(lambda,s=self:py2.up(s))而不仅仅是butUpld.clicked.connect(py2.up)@p\u p
self.tboxEV
-使
tboxEV
对象成为
Layoutexe
类的属性。因此,可以从另一个方法/函数访问
self.tboxEV
对象。
up
函数不知道
Layoutexe
对象是否存在,因此必须将其传递给此函数。一种方法是
butUpld.clicked.connect(lambda,s=self:py\uu 2.up))