📜  如何从 pyqt 行编辑中获取输入 - Python (1)

📅  最后修改于: 2023-12-03 14:51:46.094000             🧑  作者: Mango

如何从 PyQt 行编辑中获取输入 - Python

在 PyQt 中,行编辑(QLineEdit)是一种常用的小部件,允许用户输入和编辑一个单行的文本字符串。当用户输入完毕后,你通常需要获取这个输入的值,以便在程序中进行处理。这篇教程将会介绍如何从 PyQt 行编辑中获取输入。

获取行编辑的文本

在 PyQt 中,从行编辑中获取文本非常简单。我们可以通过 QLineEdit.text() 方法来获取当前输入的文本。下面是一个示例:

from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget, QVBoxLayout, QPushButton

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        # 创建一个行编辑
        self.line_edit = QLineEdit(self)

        # 创建一个按钮,用来获取行编辑中的文本
        self.button = QPushButton('Get Text', self)
        self.button.clicked.connect(self.on_get_text_button_clicked)

        # 布局
        layout = QVBoxLayout()
        layout.addWidget(self.line_edit)
        layout.addWidget(self.button)
        self.setLayout(layout)

    def on_get_text_button_clicked(self):
        # 从行编辑中获取文本
        text = self.line_edit.text()
        print(text)

if __name__ == '__main__':
    app = QApplication([])
    widget = MyWidget()
    widget.show()
    app.exec_()

在这个例子中,我们创建了一个行编辑和一个按钮。当按钮被点击时,我们会从行编辑中获取文本,并将其打印出来。

获取行编辑中的数值

如果你需要从行编辑中获取数值,那么你需要将输入转换为一个数值类型。比如,我们可以通过 float() 函数将输入转换为浮点数。下面是一个示例:

from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget, QVBoxLayout, QPushButton

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        # 创建一个行编辑
        self.line_edit = QLineEdit(self)

        # 创建一个按钮,用来获取行编辑中的数字
        self.button = QPushButton('Get Number', self)
        self.button.clicked.connect(self.on_get_number_button_clicked)

        # 布局
        layout = QVBoxLayout()
        layout.addWidget(self.line_edit)
        layout.addWidget(self.button)
        self.setLayout(layout)

    def on_get_number_button_clicked(self):
        # 从行编辑中获取数字
        text = self.line_edit.text()
        try:
            number = float(text)
            print(number)
        except ValueError:
            print('Invalid input:', text)

if __name__ == '__main__':
    app = QApplication([])
    widget = MyWidget()
    widget.show()
    app.exec_()

在这个例子中,我们在点击按钮时,将输入转换成浮点数并打印出来。如果输入无效,则会打印出一条错误消息。

获取多个行编辑中的值

如果你需要获取多个行编辑中的值,那么你可以将它们存储在一个列表或字典中。下面是一个示例:

from PyQt5.QtWidgets import QApplication, QLineEdit, QWidget, QVBoxLayout, QPushButton

class MyWidget(QWidget):
    def __init__(self):
        super().__init__()

        # 创建三个行编辑
        self.line_edits = [
            QLineEdit(self),
            QLineEdit(self),
            QLineEdit(self)
        ]

        # 创建一个按钮,用来获取行编辑中的值
        self.button = QPushButton('Get Values', self)
        self.button.clicked.connect(self.on_get_values_button_clicked)

        # 布局
        layout = QVBoxLayout()
        for line_edit in self.line_edits:
            layout.addWidget(line_edit)
        layout.addWidget(self.button)
        self.setLayout(layout)

    def on_get_values_button_clicked(self):
        # 从行编辑中获取值
        values = [line_edit.text() for line_edit in self.line_edits]
        print(values)

if __name__ == '__main__':
    app = QApplication([])
    widget = MyWidget()
    widget.show()
    app.exec_()

在这个例子中,我们创建了三个行编辑和一个按钮。点击按钮时,我们将从每个行编辑中获取值,并将它们存储在一个列表中。