锋哥原创的PyQt6视频教程:
QInputDialog类表示一个标准的输入对话框,该对话框由一个文本框(或者数字选择框,或者下拉列表框)和两个按钮(OK按钮和Cancel按钮)组成,它可以与用户进行简单的交互,例如,在主窗口中获取输入对话框中输入或者选择的值。
QInputDialog类的常用方法:
getText()方法,显示一个用于输入字符串的文本编辑框。
getText()方法的参数及返回值
参数 | 说明 |
---|---|
QWidget | 父窗口对象 |
dglTitle | QInputDialog的标题 |
txtLabel | QInputDialog内部显示的文本 |
echoMode | 文本编辑框内容的显示方式 |
defaultlnput | 文本编辑框默认显示内容 |
返回值 | 一个元组,其中text表示文本编辑框内的字符串,flag表示是否正常返回 |
getItem()方法,显示一个ComboBox下拉列表控件,用户可从中选择数据。
getItem()方法的参数及返回值
参数 | 说明 |
---|---|
QWidget | 父窗口对象 |
dglTitle | QInputDialog的标题 |
txtLabel | QlnputDialog内部显示的文本 |
items | ComboBox组件的内容列表 |
curIndex | 默认显示ComboBox 组件哪一个索引的内容 |
editable | ComboBox组件是否可被编辑 |
返回值 | 一个元组,其中 text 表示从ComboBox下拉列表中选择的内容,flag表示是否正常返回 |
getInt()方法。显示一个用于输入整数的编辑框,显示的是SpinBox控件。
getInt()方法的参数及返回值
参数 | 说明 |
---|---|
QWidget | 父窗口对象 |
dglTitle | QInputDialog的标题 |
txtLabel | QInputDialog内部显示的文本 |
defaultValue | SpinBox控件默认值 |
minValue | SpinBox控件最小值 |
maxValue | SpinBox控件最大值 |
stepValue | SpinBox控件单步值 |
返回值 | 一个元组,其中 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())