如何通过将文本小部件传递给函数来动态更改 pyqt5 中的标签文本?

问题描述 投票:0回答:0

我想通过将 Widget 传递给启动文件对话框的函数来动态编辑 QLineEdit 文本的内容。然后将传递的小部件的文本设置为所选文件。 显然我不想为每个 QLineEdit Widget 创建一个函数。

这是当前状态(显然是行不通的)。

import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class UserInterface(QWidget):

    def __init__(self, *args, **kwargs):
        super(UserInterface, self).__init__(*args, **kwargs)
        self.layout = QFormLayout()

        self.button_test_1 = QPushButton("Select File")
        self.line_test_1 = QLineEdit("Select File")
        self.button_test_1.clicked.connect(lambda: self.select_file(self.line_test_1))      
        self.layout.addRow(self.button_test_1,self.line_test_1)

        self.button_test_2 = QPushButton("Select File")
        self.line_test_2 = QLineEdit("Select File")
        self.button_test_2.clicked.connect(lambda: self.select_file(self.line_test_2))      
        self.layout.addRow(self.button_test_2,self.line_test_2)

        self.setLayout(self.layout)

    def select_file(self,line):
        fileName = QFileDialog.getOpenFileName(self,"Choose File",directory="D:\\",filter="*.json *.csv")
        self.line.setText(fileName)

def main():
    app  = QApplication(sys.argv)

    controller = UserInterface()
    controller.show()

    sys.exit(app.exec_())

main()

目前它导致错误,因为“self.line”不存在。

最后,我希望能够将 self.line_test_[n](或任何其他名称)传递给我的 select_file 函数,并在函数内设置传递的 Wigdet 的文本。

python pyqt5 widget settext qlineedit
© www.soinside.com 2019 - 2024. All rights reserved.