PyQt5 QInputDialog小工具

  • Post category:Python

PyQt5是一个十分强大的Python图形用户界面(GUI)工具包。其中,QInputDialog小工具是PyQt5中一个用来获取用户输入的小工具,接下来我会为大家详细讲解它的完整使用攻略。

1. 导入QInputDialog

在开始使用QInputDialog前,我们需要先在脚本中导入它。代码如下:

from PyQt5.QtWidgets import QInputDialog

2. 创建QInputDialog

接着,我们需要创建QInputDialog。代码如下:

input_dialog = QInputDialog()

3. 显示QInputDialog

创建QInputDialog之后,我们需要显示它。代码如下:

input_dialog.show()

4. 获取输入值

当QInputDialog被用户输入和关闭时,我们需要获取输入值。代码如下:

input_value, ok = input_dialog.textValue()

其中,input_value代表用户输入的值,ok代表输入是否被确认(点击了确认按钮)。如果点击了取消按钮或关闭了QInputDialog,则ok的值为False。

示例1:获取用户输入的字符串

接下来,我们来看一下如何使用QInputDialog获取用户输入的字符串:

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


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

        # 创建一个按钮,点击后弹出输入对话框
        self.button = QPushButton('获取字符串', self)
        self.button.clicked.connect(self.show_input_dialog)

        # 创建一个文本框,用于显示用户输入的字符串
        self.textbox = QLineEdit(self)

        # 创建一个布局,将上述两个控件放入其中
        layout = QVBoxLayout()
        layout.addWidget(self.button)
        layout.addWidget(QLabel('用户输入的字符串:'))
        layout.addWidget(self.textbox)
        self.setLayout(layout)

    def show_input_dialog(self):
        input_dialog = QInputDialog()
        input_dialog.setLabelText('请输入字符串:')
        input_dialog.setOkButtonText('确定')
        input_dialog.setCancelButtonText('取消')
        input_dialog.setTextValue('默认值')

        if input_dialog.exec_() == QInputDialog.Accepted:
            input_value, ok = input_dialog.textValue()
            if ok:
                self.textbox.setText(input_value)


if __name__ == '__main__':
    app = QApplication([])
    demo = InputDialogDemo()
    demo.show()
    app.exec_()

在上述示例代码中,我们创建了一个按钮,当点击该按钮时,会弹出一个QInputDialog,让用户输入字符串,然后将用户输入的字符串显示在一个文本框中。

show_input_dialog方法中,我们首先创建了一个QInputDialog对象,并设置了一些属性,如输入框的标签文本、确认和取消按钮的文本、默认值等。接着,我们通过input_dialog.exec_()方法来显示QInputDialog。当用户输入和确认了值后,我们通过input_dialog.textValue()方法获取输入值和ok值,然后进行相应的处理。

示例2:获取用户输入的整数

除了获取字符串,QInputDialog还可以用于获取其他类型的值,如整数。接下来,我们来看一下如何使用QInputDialog获取用户输入的整数。

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


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

        # 创建一个按钮,点击后弹出输入对话框
        self.button = QPushButton('获取整数', self)
        self.button.clicked.connect(self.show_input_dialog)

        # 创建一个文本框,用于显示用户输入的整数
        self.textbox = QLineEdit(self)

        # 创建一个布局,将上述两个控件放入其中
        layout = QVBoxLayout()
        layout.addWidget(self.button)
        layout.addWidget(QLabel('用户输入的整数:'))
        layout.addWidget(self.textbox)
        self.setLayout(layout)

    def show_input_dialog(self):
        input_dialog = QInputDialog()
        input_dialog.setLabelText('请输入整数:')
        input_dialog.setOkButtonText('确定')
        input_dialog.setCancelButtonText('取消')
        input_dialog.setIntRange(0, 100)
        input_dialog.setIntValue(50)

        if input_dialog.exec_() == QInputDialog.Accepted:
            input_value, ok = input_dialog.intValue()
            if ok:
                self.textbox.setText(str(input_value))


if __name__ == '__main__':
    app = QApplication([])
    demo = InputDialogDemo()
    demo.show()
    app.exec_()

在上述示例代码中,我们创建了一个按钮,当点击该按钮时,会弹出一个QInputDialog,让用户输入整数,并将用户输入的整数显示在一个文本框中。

与示例1类似,我们在show_input_dialog方法中创建了一个QInputDialog对象,并设置了一些属性,如输入框的标签文本、确认和取消按钮的文本、输入值的范围等。

注意,我们使用了input_dialog.intValue()方法来获取用户输入的整数。此外,由于intValue()方法返回的是整数,所以我们需要将其转换为字符串,然后再显示在文本框中。