20.PyQt5【基本组件】输入对话框-QInputDialog

一、前言

这是一个预配置的对话框,带有一个文本字段和两个按钮,确定和取消。用户单击 Ok 按钮或按 Enter 后,父窗口收集文本框中的输入。

用户输入可以是数字、字符串或列表中的项目。还显示提示用户他应该做什么的标签。

二、学习目标

1.QInputDialog常用方法

2.QInputDialog常用信号

3.QInputDialog组件的应用

三、知识点

1.【QInputDialog常用方法】

方法 描述
getText() 用于键入文本的简单行编辑字段
getDouble() 可以输入浮点数的微调框
getInt() 为整数创建一个微调框
getItem() 用户可以从中选择项目的组合框
setWindowTitle() 设置窗体标题
setLabelText() 设置内容提示
setTextValue() 设置输入信息
textValue() 获取输入文本
setOkButtonText() 为OK按钮设置文本显示
setCancelButtonText() 为Cancel按钮设置文本显示

2.【QInputDialog常用信号】

QInputDialog组件一般不需要用到信号。

信号 描述
textValueChanged(text) 文本改变时触发信号
textValueSelected(text) 文本被选中时触发信号

3.【QInputDialog组件的应用】

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QInputDialog


class QmyWidget(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体
        self.setupUi()

    def setupUi(self):
        """页面初始化"""
        # 设置窗体大小及标题
        self.resize(500, 400)
        self.setWindowTitle("QInputDialog组件示例")
        # 创建布局
        self.layout = QVBoxLayout()
        # 创建两个按钮组件
        self.button1 = QPushButton("字符串输入框", self)
        self.button1.clicked.connect(self.get_text)  # 为button绑定消息对话框
        self.button2 = QPushButton("下拉列表输入框", self)
        self.button2.clicked.connect(self.get_item)  # 为button绑定消息对话框
        # 将组件添加到布局中
        self.layout.addWidget(self.button1)
        self.layout.addWidget(self.button2)
        # 为窗体添加布局
        self.setLayout(self.layout)

    def get_text(self):
        """获取输入对话框文本"""
        # QInputDialog组件定义
        inputDialog = QInputDialog(self)
        # QInputDialog组件设置
        inputDialog.setWindowTitle("标题")
        inputDialog.setLabelText("请输入文本:")
        inputDialog.setTextValue("这是默认值")
        inputDialog.setOkButtonText("确定")
        inputDialog.setCancelButtonText("取消")
        ok = inputDialog.exec()
        if ok and inputDialog.textValue():
            print("文本输入成功:{}".format(inputDialog.textValue()))
        
        # 方式二
        # text, ok = inputDialog.getText(self, '标题', '请输入文本:')  # 返回文本内容和按钮的点击项
        # if ok and text:
        #     print("文本输入成功:{}".format(text))

    def get_item(self):
        """获取输入对话框item"""
        items = ("C", "C++", "Java", "Python")
        item, ok = QInputDialog.getItem(self, "标题", "请输入语言:", items, 0, False)  # 返回文本内容和按钮的点击项
        if ok and item:
            print("item输入成功:{}".format(item))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myMain = QmyWidget()
    myMain.show()
    sys.exit(app.exec_())
  • 关键代码

            # QInputDialog组件定义
            inputDialog = QInputDialog(self)
            # QInputDialog组件设置
            inputDialog.setWindowTitle("标题")
            inputDialog.setLabelText("请输入文本:")
            inputDialog.setTextValue("这是默认值")
            inputDialog.setOkButtonText("确定")
            inputDialog.setCancelButtonText("取消")
            ok = inputDialog.exec()
            if ok and inputDialog.textValue():
                print("文本输入成功:{}".format(inputDialog.textValue()))
    
posted @ 2023-01-16 10:45  测开星辰  阅读(788)  评论(0编辑  收藏  举报