如何动态读取 QLineEdit 数据

Posted

技术标签:

【中文标题】如何动态读取 QLineEdit 数据【英文标题】:How to Read QLineEdit data dynamically 【发布时间】:2020-05-11 10:34:01 【问题描述】:

我正在尝试在 PyQt5 中动态创建标签和文本框,但是我不知道如何在用户点击保存按钮时读取文本框中输入的数据。我的代码如下所示:

       self.setWindowTitle("Yaml --> Json")
       self.setGeometry(self.left, self.top, self.width, self.height)

       self.createLayout()
       vbox = QVBoxLayout()
       for i in range(0, len(self.listItems)):
           vbox.addWidget(QLabel(list(self.listItems.keys())[i]))
           vbox.addWidget(QLineEdit())
       vbox.addWidget(self.groupBox)
       self.setLayout(vbox)
       self.show()

   def createLayout(self):
       self.groupBox = QGroupBox()
       hboxLayout = QHBoxLayout()

       button = QPushButton("Save", self)
       button.setIcon(QtGui.QIcon("save.png"))
       button.setIconSize(QtCore.QSize(40, 40))
       button.setMinimumHeight(40)
       button.clicked.connect(self.ClickSave)
       hboxLayout.addWidget(button)

       button1 = QPushButton("Exit", self)
       button1.setIcon(QtGui.QIcon("exit.png"))
       button1.setIconSize(QtCore.QSize(40, 40))
       button1.setMinimumHeight(40)
       button1.clicked.connect(self.ClickExit)
       hboxLayout.addWidget(button1)

       self.groupBox.setLayout(hboxLayout)

   def ClickExit(self):
       print("Exited!!")
       sys.exit()

   def ClickSave(self):
       print("Saved!")```

【问题讨论】:

请提供minimal reproducible example 【参考方案1】:

您可以将稍后要访问的小部件分配给实例变量或将它们存储在列表中,例如

    self.line_edit_list = []
    for i in range(0, len(self.listItems)):
        vbox.addWidget(QLabel(list(self.listItems.keys())[i]))
        line_edit = QLineEdit()
        vbox.addWidget(line_edit)
        self.line_edit_list.append(line_edit)

    ....

    def ClickSave(self):
        for edit in self.line_edit_list:
            print(edit.text())

【讨论】:

以上是关于如何动态读取 QLineEdit 数据的主要内容,如果未能解决你的问题,请参考以下文章

Python PyQt5:如果 QLineEdit 为空,如何更改 QLabel 的颜色?

单击按钮时如何从另一个 Python 文件中读取 QLineEdit 值的值

如何在启动时绘制 QLines?

如何通过单击pyqt5中的按钮来制作qlineedit的动态行和列?

Qt QLine 类扩展

Qt - 在面板中动态添加 QLineEdit