PyQt6 QInputDialog输入对话框控件

发布时间:2023年12月19日

锋哥原创的PyQt6视频教程:

2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计50条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~、第2讲 PyQt6库和工具库QTDesigner安装与配置、第3讲 PyQt6第一个程序HelloWorld实现等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV11C4y1P7fj/

QInputDialog类表示一个标准的输入对话框,该对话框由一个文本框(或者数字选择框,或者下拉列表框)和两个按钮(OK按钮和Cancel按钮)组成,它可以与用户进行简单的交互,例如,在主窗口中获取输入对话框中输入或者选择的值。

QInputDialog类的常用方法:

getText()方法,显示一个用于输入字符串的文本编辑框。

getText()方法的参数及返回值

参数说明
QWidget父窗口对象
dglTitleQInputDialog的标题
txtLabelQInputDialog内部显示的文本
echoMode文本编辑框内容的显示方式
defaultlnput文本编辑框默认显示内容
返回值一个元组,其中text表示文本编辑框内的字符串,flag表示是否正常返回

getItem()方法,显示一个ComboBox下拉列表控件,用户可从中选择数据。

getItem()方法的参数及返回值

参数说明
QWidget父窗口对象
dglTitleQInputDialog的标题
txtLabelQlnputDialog内部显示的文本
itemsComboBox组件的内容列表
curIndex默认显示ComboBox 组件哪一个索引的内容
editableComboBox组件是否可被编辑
返回值一个元组,其中 text 表示从ComboBox下拉列表中选择的内容,flag表示是否正常返回

getInt()方法。显示一个用于输入整数的编辑框,显示的是SpinBox控件。

getInt()方法的参数及返回值

参数说明
QWidget父窗口对象
dglTitleQInputDialog的标题
txtLabelQInputDialog内部显示的文本
defaultValueSpinBox控件默认值
minValueSpinBox控件最小值
maxValueSpinBox控件最大值
stepValueSpinBox控件单步值
返回值一个元组,其中 inputValue表示SpinBox中选择的整数值,flag表示是否正常返回

getDouble()方法。显示一个用于输入浮点数的编辑框,显示的是DoubleSpinBox控件。

getDouble()方法的参数及返回值

UI生成参考代码:

from PyQt6 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(267, 220)
        self.formLayoutWidget = QtWidgets.QWidget(parent=Form)
        self.formLayoutWidget.setGeometry(QtCore.QRect(20, 10, 231, 191))
        self.formLayoutWidget.setObjectName("formLayoutWidget")
        self.formLayout = QtWidgets.QFormLayout(self.formLayoutWidget)
        self.formLayout.setContentsMargins(10, 10, 10, 0)
        self.formLayout.setHorizontalSpacing(10)
        self.formLayout.setVerticalSpacing(20)
        self.formLayout.setObjectName("formLayout")
        self.label = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label.setObjectName("label")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label)
        self.lineEdit = QtWidgets.QLineEdit(parent=self.formLayoutWidget)
        self.lineEdit.setObjectName("lineEdit")
        self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit)
        self.lineEdit_2 = QtWidgets.QLineEdit(parent=self.formLayoutWidget)
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_2)
        self.label_2 = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label_2.setObjectName("label_2")
        self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_2)
        self.label_3 = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label_3.setObjectName("label_3")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_3)
        self.lineEdit_3 = QtWidgets.QLineEdit(parent=self.formLayoutWidget)
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_3)
        self.label_4 = QtWidgets.QLabel(parent=self.formLayoutWidget)
        self.label_4.setObjectName("label_4")
        self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_4)
        self.lineEdit_4 = QtWidgets.QLineEdit(parent=self.formLayoutWidget)
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_4)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "姓名:"))
        self.label_2.setText(_translate("Form", "年龄:"))
        self.label_3.setText(_translate("Form", "班级:"))
        self.label_4.setText(_translate("Form", "分数:"))

Main测试代码:

"""
    python加载ui文件
    作者 : 小锋老师
    官网 : www.python222.com
"""
import sys

from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QLineEdit, QInputDialog
from PyQt6 import uic, QtGui


def getName(formLayoutWidget, name_input):
    name, ok = QInputDialog.getText(formLayoutWidget, "姓名", "请输入姓名", QLineEdit.EchoMode.Normal, "python222")
    if ok:
        name_input.setText(name)


def getGrade(formLayoutWidget, grade_input):
    grade, ok = QInputDialog.getItem(formLayoutWidget, "班级", "请选择班级", ('大一1班', '大一2班', '大一3班'), 0,
                                     False)
    if ok:
        grade_input.setText(grade)


def getAge(formLayoutWidget, age_input):
    age, ok = QInputDialog.getInt(formLayoutWidget, "年龄", "请选择年龄", 18, 1, 100, 1)
    if ok:
        age_input.setText(str(age))


def getScore(formLayoutWidget, score_input):
    score, ok = QInputDialog.getDouble(formLayoutWidget, "分数", "请选择分数", 98.5, 0, 100, 2)
    if ok:
        score_input.setText(str(score))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ui = uic.loadUi("./QInputDialog输入对话框控件.ui")
    formLayoutWidget = ui.formLayoutWidget
    name_input: QLineEdit = ui.lineEdit
    name_input.returnPressed.connect(lambda: getName(formLayoutWidget, name_input))

    grade_input: QLineEdit = ui.lineEdit_3
    grade_input.returnPressed.connect(lambda: getGrade(formLayoutWidget, grade_input))

    age_input: QLineEdit = ui.lineEdit_2
    age_input.returnPressed.connect(lambda: getAge(formLayoutWidget, age_input))

    score_input: QLineEdit = ui.lineEdit_4
    score_input.returnPressed.connect(lambda: getScore(formLayoutWidget, score_input))

    ui.show()

    sys.exit(app.exec())

文章来源:https://blog.csdn.net/caoli201314/article/details/135093795
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。