Pyqt5 基本界面组件之inputDialog的使用


Posted in Python onJune 25, 2019

QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,可以是一个字符串,一个Int类型数据,一个double类型数据或是一个下拉列表框的条目。

对应的Dialog其中包括一个提示标签,一个输入控件(若是调用字符串输入框,则为一个QLineEdit,若是调用Int类型或double类型,则为一个QSpinBox,若是调用列表条目输入框,则为一个QComboBox),还包括一个确定输入(Ok)按钮和一个取消输入(Cancel)按钮。

QInputDialog:

class QInputDialog(QDialog)
 | QInputDialog(QWidget parent=None, Qt.WindowFlags flags=0)

QInputDialog同样继承自QDialog,提供简单输入的对话框,

代码示例 :

示例代码如下:

#-*- coding:utf-8 -*-
'''
inputDialog
'''
__author__ = 'Tony Zhu'

from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit, QInputDialog, QGridLayout, QLabel, QPushButton, QFrame

class InputDialog(QWidget):
  def __init__(self):    
    super(InputDialog,self).__init__()
    self.initUi()

  def initUi(self):
    self.setWindowTitle("项目信息")
    self.setGeometry(400,400,300,260)

    label1=QLabel("项目名称:")
    label2=QLabel("项目类型:")
    label3=QLabel("项目人员:")
    label4=QLabel("项目成本:")
    label5=QLabel("项目介绍:")

    self.nameLable = QLabel("PyQt5")
    self.nameLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.styleLable = QLabel("外包")
    self.styleLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.numberLable = QLabel("40")
    self.numberLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.costLable = QLabel("400.98")
    self.costLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.introductionLable = QLabel("服务外包第三方公司")
    self.introductionLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)

    nameButton=QPushButton("...")
    nameButton.clicked.connect(self.selectName)
    styleButton=QPushButton("...")
    styleButton.clicked.connect(self.selectStyle)
    numberButton=QPushButton("...")
    numberButton.clicked.connect(self.selectNumber)
    costButton=QPushButton("...")
    costButton.clicked.connect(self.selectCost)
    introductionButton=QPushButton("...")
    introductionButton.clicked.connect(self.selectIntroduction)

    mainLayout=QGridLayout()
    mainLayout.addWidget(label1,0,0)
    mainLayout.addWidget(self.nameLable,0,1)
    mainLayout.addWidget(nameButton,0,2)
    mainLayout.addWidget(label2,1,0)
    mainLayout.addWidget(self.styleLable,1,1)
    mainLayout.addWidget(styleButton,1,2)
    mainLayout.addWidget(label3,2,0)
    mainLayout.addWidget(self.numberLable,2,1)
    mainLayout.addWidget(numberButton,2,2)
    mainLayout.addWidget(label4,3,0)
    mainLayout.addWidget(self.costLable,3,1)
    mainLayout.addWidget(costButton,3,2)
    mainLayout.addWidget(label5,4,0)
    mainLayout.addWidget(self.introductionLable,4,1)
    mainLayout.addWidget(introductionButton,4,2)

    self.setLayout(mainLayout)



  def selectName(self):
    name,ok = QInputDialog.getText(self,"项目名称","输入项目名称:",
                    QLineEdit.Normal,self.nameLable.text())
    if ok and (len(name)!=0):
      self.nameLable.setText(name)
  def selectStyle(self):
    list = ["外包","自研"]

    style,ok = QInputDialog.getItem(self,"项目性质","请选择项目性质:",list)
    if ok :
      self.styleLable.setText(style)

  def selectNumber(self):
    number,ok = QInputDialog.getInt(self,"项目成员","请输入项目成员人数:",int(self.numberLable.text()),20,100,2)
    if ok :
      self.numberLable.setText(str(number))

  def selectCost(self):
    cost,ok = QInputDialog.getDouble(self,"项目成本","请输入项目成员人数:",float(self.costLable.text()),100.00,500.00,2)
    if ok :
      self.costLable.setText(str(cost))

  def selectIntroduction(self):
    introduction,ok = QInputDialog.getMultiLineText(self,"项目介绍","介绍:","服务外包第三方公司 \nPython project")
    if ok :
      self.introductionLable.setText(introduction)



if __name__=="__main__":
  import sys
  app=QApplication(sys.argv)
  myshow=InputDialog()
  myshow.show()
  sys.exit(app.exec_())

运行之后的效果:

Pyqt5 基本界面组件之inputDialog的使用

示例说明:

通过点击不同的按钮,来选择不同类型的输入对话框,从而选择所需的数据。

代码分析:

L18~22:

label1=QLabel("项目名称:")
    label2=QLabel("项目类型:")
    label3=QLabel("项目人员:")
    label4=QLabel("项目成本:")
    label5=QLabel("项目介绍:")

定义了数据项名称的标签。

L24~33:

self.nameLable = QLabel("PyQt5")
    self.nameLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.styleLable = QLabel("外包")
    self.styleLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.numberLable = QLabel("40")
    self.numberLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.costLable = QLabel("400.98")
    self.costLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)
    self.introductionLable = QLabel("服务外包第三方公司")
    self.introductionLable.setFrameStyle(QFrame.Panel|QFrame.Sunken)

定义了项目数据项中的数据内容,数据内容显示在对应的标签中。

setFrameStyle()设定标签的样式,有如下的样式:

QFrame.Box

QFrame.Panel

QFrame.WinPanel

QFrame.HLine

QFrame.VLine

QFrame.StyledPanel

QFrame.Sunken

QFrame.Raised

L35~L44:

nameButton=QPushButton("...")
    nameButton.clicked.connect(self.selectName)
    styleButton=QPushButton("...")
    styleButton.clicked.connect(self.selectStyle)
    numberButton=QPushButton("...")
    numberButton.clicked.connect(self.selectNumber)
    costButton=QPushButton("...")
    costButton.clicked.connect(self.selectCost)
    introductionButton=QPushButton("...")
    introductionButton.clicked.connect(self.selectIntroduction)

实例化QPushButton对象,并将对应的clicked信号和自定义的槽函数绑定起来。

L46~61:

实例化网格布局,并将对应的控件添加到网格布局中。

功能分析:

1:获取项目名称:

def selectName(self):
    name,ok = QInputDialog.getText(self,"项目名称","输入项目名称:", QLineEdit.Normal,self.nameLable.text())
    if ok and (len(name)!=0):
      self.nameLable.setText(name)

QInputDialog中很多方法均为静态方法,因此不需要实例化直接可以调用。调用QInputDialog的getText()函数弹出标准字符串输入对话框,getText()函数原型如下:

| getText(...)
 |   QInputDialog.getText(QWidget, str, str, QLineEdit.EchoMode echo=QLineEdit.Normal, str text=QString(), Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准输入对话框的标题名;

第3个参数str,标准输入对话框的标签提示;

第4个参数echo,mode指定标准输入对话框中QLineEdit控件的输入模式;

第5个参数str,标准输入对话框中QLineEdit控件的默认值;

第6个参数flags,指明标准输入对话框的窗体标识;

第7个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击nameButton之后的效果:

Pyqt5 基本界面组件之inputDialog的使用

若用户单击了“OK”按钮,则把新输入的名称更新至显示标签。

2:获取项目属性:

def selectStyle(self):
    list = ["外包","自研"]
    style,ok = QInputDialog.getItem(self,"项目性质","请选择项目性质:",list)
    if ok :
      self.styleLable.setText(style)

调用QInputDialog的getItem()函数弹出标准条目选择对话框,getItem()函数原型如下:

| getItem(...)
 |   QInputDialog.getItem(QWidget, str, str, list-of-str, int current=0, bool editable=True, Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准条目选择对话框的标题名;

第3个参数str,标准条目选择对话框的标签提示;

第4个参数list-of-str,标准条目选择对话框中对应条目的list;

第5个参数editable,标准条目选择对话框条目是否可编辑标识,默认为不可编辑;

第6个参数flags,指明标准输入对话框的窗体标识;

第7个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局.;

单击styleButton之后的效果:

Pyqt5 基本界面组件之inputDialog的使用

若用户单击了“OK”按钮,则把新选择的类型更新至显示标签。

3:获取项目成员:

def selectNumber(self):
    number,ok = QInputDialog.getInt(self,"项目成员","请输入项目成员人数:",int(self.numberLable.text()),20,100,2)
    if ok :
      self.numberLable.setText(str(number))

调用QInputDialog的getInt()函数弹出标准int类型输入对话框,getInt()函数原型如下:

| getInt(...)
|   QInputDialog.getInt(QWidget, str, str, int value=0, int min=-2147483647, int max=2147483647, int step=1, Qt.WindowFlags flags=0) -> (int, bool)

第1个参数parent,用于指定父组件;

第2个参数str,是标准int类型输入对话框的标题名;

第3个参数str,标准int类型输入对话框的标签提示;

第4个参数value,标准int类型输入对话框中的默认值;

第5个参数min,标准int类型输入对话框中的最小值;

第6个参数max,标准int类型输入对话框中的最大值;

第7个参数step,标准int类型输入对话框中的步长,即QSpinBox中上下选择是数据变化的步长;

第8个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击numberButton之后的效果:

Pyqt5 基本界面组件之inputDialog的使用

若用户单击了“OK”按钮,则把新选择的成员数据更新至显示标签。

4:获取项目成本:

def selectCost(self):
    cost,ok = QInputDialog.getDouble(self,"项目成本","请输入项目成员人数:",float(self.costLable.text()),100.00,500.00,2)
    if ok :
      self.costLable.setText(str(cost))

调用QInputDialog的getDouble()函数弹出标准float类型输入对话框,getDouble()函数原型如下:

| getDouble(...)
 |   QInputDialog.getDouble(QWidget, str, str, float value=0, float min=-2147483647, float max=2147483647, int decimals=1, Qt.WindowFlags flags=0) -> (float, bool)

第1个参数parent,用于指定父组件;

第2个参数str,输入对话框的标题名;

第3个参数str,输入对话框的标签提示;

第4个参数value,标准float类型输入对话框中的默认值;

第5个参数min,标准float类型输入对话框中的最小值;

第6个参数max,标准float类型输入对话框中的最大值;

第7个参数decimals,小数点后面保留的位数;

第8个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击costButton之后的效果:

Pyqt5 基本界面组件之inputDialog的使用

若用户单击了“OK”按钮,则把新选择的成本数据更新至显示标签

5:获取项目介绍:

def selectIntroduction(self):
    introduction,ok = QInputDialog.getMultiLineText(self,"项目介绍","介绍:","服务外包第三方公司 \nPython project")
    if ok :
      self.introductionLable.setText(introduction)

调用QInputDialog的getMultiLineText()函数弹出标准多行文本类型输入对话框,getMultiLineText()函数原型如下:

| getMultiLineText(...)
 |   QInputDialog.getMultiLineText(QWidget, str, str, str text='', Qt.WindowFlags flags=0, Qt.InputMethodHints inputMethodHints=Qt.ImhNone) -> (str, bool)

第1个参数parent,用于指定父组件;

第2个参数str,输入对话框的标题名;

第3个参数str,输入对话框的标签提示;

第4个参数text,输入对话框中LineEdit的默认值;

第5个参数flags,指明标准输入对话框的窗体标识;

第6个参数inputMethodHints,通过选择不同的inputMethodHints值来实现不同的键盘布局;

单击introductionButton之后的效果:

Pyqt5 基本界面组件之inputDialog的使用

若用户单击了“OK”按钮,则把新修改的项目介绍信息更新至显示标签

以上这篇Pyqt5 基本界面组件之inputDialog的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
构建Python包的五个简单准则简介
Jun 15 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
dataframe设置两个条件取值的实例
Apr 12 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
May 25 Python
Python实现的删除重复文件或图片功能示例【去重】
Apr 23 Python
PyQt5实现QLineEdit添加clicked信号的方法
Jun 25 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
Python2和Python3中@abstractmethod使用方法
Feb 04 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 Python
python调用有道智云API实现文件批量翻译
Oct 10 Python
对PyQt5的输入对话框使用(QInputDialog)详解
Jun 25 #Python
如何使用Python标准库进行性能测试
Jun 25 #Python
python绘制评估优化算法性能的测试函数
Jun 25 #Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 #Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 #Python
pyqt5 删除layout中的所有widget方法
Jun 25 #Python
在Python中表示一个对象的方法
Jun 25 #Python
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
PHP 彩色文字实现代码
2009/06/29 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
PHPMailer邮件发送的实现代码
2013/05/04 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
python 文件操作删除某行的实例
2017/09/04 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
Python partial函数原理及用法解析
2019/12/11 Python
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
高中生第一学年自我鉴定
2014/09/12 职场文书
党干部专题民主生活会对照检查材料思想汇报
2014/10/06 职场文书
幼师小班个人总结
2015/02/12 职场文书
党支部审查意见
2015/06/02 职场文书
聘任通知书
2015/09/21 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers