我想通过将 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 的文本。