一、前言
这是一个预配置的对话框,带有一个文本字段和两个按钮,确定和取消。用户单击 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()))