上期我们介绍了PyQt5软件界面的搭建,主要涉及到了以下几个知识点:
状态栏
菜单
工具栏
今天我们主要讲解一下标准输入对话框的知识。
对话框窗口或对话框是大多数现代GUI应用程序中不可或缺的一部分。在计算机应用程序中,一个对话框是一个用于“与应用程序”通话的窗口。对话框用于输入数据,修改数据,更改应用程序设置等。因为对话框涉及的内容比较多,我们计划分成几个章节来讲解,今天主要介绍输入对话框。
QInputDialog提供了一个简单的便利对话框,可以从用户获取单个值。 输入值可以是列表中的字符串,数字或项目。我们会分别通过一个例子来看看一下。效果如下:
首先看下QInputDialog包含的几个方法:
getDouble(QWidget, str, str, value: float = 0, min: float = -2147483647, max: float = 2147483647, decimals: int = 1, flags: Union[Qt.WindowFlags,Qt.WindowType]=Qt.WindowFlags())->Tuple[float,bool]
getInt(QWidget, str, str, value: int = 0, min: int = -2147483647, max: int = 2147483647, step: int = 1, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()) -> Tuple[int, bool]
getItem(QWidget, str, str, Iterable[str], current:int=0,editable:bool=True,flags:Union[Qt.WindowFlags,Qt.WindowType]=Qt.WindowFlags(),inputMethodHints:Union[Qt.InputMethodHints,Qt.InputMethodHint] = Qt.ImhNone) -> Tuple[str, bool]
getMultiLineText(QWidget, str, str, text: str = '', flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags(), inputMethodHints: Union[Qt.InputMethodHints, Qt.InputMethodHint] = Qt.ImhNone)-> Tuple[str, bool]
getText(QWidget, str, str, echo: QLineEdit.EchoMode = QLineEdit.Normal,text: str = '', flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags(),inputMethodHints: Union[Qt.InputMethodHints, Qt.InputMethodHint] = Qt.ImhNone) -> Tuple[str, bool]
接着来看看具体的实现例子:
#coding=utf-8
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QLabel, QInputDialog, QTextBrowser)
import sys
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(500,500,500,550)
self.setWindowTitle('关注微信公众号:学点编程吧--标准输入对话框')
self.lb1 = QLabel('姓名:',self)
self.lb1.move(20,20)
self.lb2 = QLabel('年龄:',self)
self.lb2.move(20,80)
self.lb3 = QLabel('性别:',self)
self.lb3.move(20,140)
self.lb4 = QLabel('身高(cm):',self)
self.lb4.move(20,200)
self.lb5 = QLabel('基本信息:',self)
self.lb5.move(20,260)
self.lb6 = QLabel('学点编程',self)
self.lb6.move(80,20)
self.lb7 = QLabel('18',self)
self.lb7.move(80,80)
self.lb8 = QLabel('男',self)
self.lb8.move(80,140)
self.lb9 = QLabel('175',self)
self.lb9.move(120,200)
self.tb = QTextBrowser(self)
self.tb.move(20,320)
self.bt1 = QPushButton('修改姓名',self)
self.bt1.move(200,20)
self.bt2 = QPushButton('修改年龄',self)
self.bt2.move(200,80)
self.bt3 = QPushButton('修改性别',self)
self.bt3.move(200,140)
self.bt4 = QPushButton('修改身高',self)
self.bt4.move(200,200)
self.bt5 = QPushButton('修改信息',self)
self.bt5.move(200,260)
self.show()
self.bt1.clicked.connect(self.showDialog)
self.bt2.clicked.connect(self.showDialog)
self.bt3.clicked.connect(self.showDialog)
self.bt4.clicked.connect(self.showDialog)
self.bt5.clicked.connect(self.showDialog)
def showDialog(self):
sender = self.sender()
sex = ['男','女']
if sender == self.bt1:
text, ok = QInputDialog.getText(self, '修改姓名', '请输入姓名:')
if ok:
self.lb6.setText(text)
elif sender == self.bt2:
text, ok = QInputDialog.getInt(self, '修改年龄', '请输入年龄:', min = 1)
if ok:
self.lb7.setText(str(text))
elif sender == self.bt3:
text, ok = QInputDialog.getItem(self, '修改性别', '请选择性别:',sex)
if ok:
self.lb8.setText(text)
elif sender == self.bt4:
text, ok = QInputDialog.getDouble(self, '修改身高', '请输入身高:', min = 1.0)
if ok:
self.lb9.setText(str(text))
elif sender == self.bt5:
text, ok = QInputDialog.getMultiLineText(self, '修改信息', '请输入个人信息:')
if ok:
self.tb.setText(text)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
该示例具有按钮和标签和文本浏览器。 通过按钮显示输入对话框以便获取值。 输入的文本将显示在窗口的标签和文本浏览器中。
self.bt1.clicked.connect(self.showDialog)
self.bt2.clicked.connect(self.showDialog)
self.bt3.clicked.connect(self.showDialog)
self.bt4.clicked.connect(self.showDialog)
self.bt5.clicked.connect(self.showDialog)
单击按钮连接对应的槽函数。
if sender == self.bt1:
text, ok = QInputDialog.getText(self, '修改姓名', '请输入姓名:')
若我们按下按钮1,此时显示输入对话框。 第一个字符串是一个对话标题,第二个是对话框中的一个消息。 对话框返回输入的文本和布尔值。 如果我们点击Ok按钮,布尔值为true。
if ok:
self.lb6.setText(text)
如果我们按下ok键,则标签6的text值是从对话框接收的文本。效果如下:
其他的函数也是类似的。但是提供的功能不一样。
text, ok = QInputDialog.getInt(self, '修改年龄', '请输入年龄:', min = 1)
可以输入整数,最小值、最大值可以自己设定,步长也可以自己设定。效果如下:
text, ok = QInputDialog.getItem(self, '修改性别', '请选择性别:',sex)
可以输入选择项,待选放到列表中,这里的列表就是sex。效果如下:
text, ok = QInputDialog.getDouble(self, '修改身高', '请输入身高:', min = 1.0)
可以输入浮点型小数,最小值、最大值可以自己设定。效果如下:
text, ok = QInputDialog.getMultiLineText(self, '修改信息', '请输入个人信息:')
可以输入富文本,在里面增加一些格式信息。效果如下:
我们总结一下今天的内容:
标准输入框的五种使用
ok,今天就到这里,我们下期再谈谈其他的对话框,对话框本身的内容就比较多,会多分几期讲解。
如果你想要本次教程中的相关源码,请关注微信公众号:学点编程吧,发送pyqt58,会自动得到相应的百度网盘下载链接。
在实操中遇到问题?欢迎来讨论。学点编程吧-百度贴吧--计算机程序学习的园地!--学点编程吧,让我们的生活更简单,更高效!能用计算机解决的事情,尽量不要让人解决。如果你在学习当中有任何疑问、学习心得、职业发展等内容欢迎在贴吧中分享,让我tieba.baidu.com