对PyQt5的输入对话框使用(QInputDialog)详解


Posted in Python onJune 25, 2019

PyQt5中QInputDialog的使用,Qt的QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,它提供了4种数据类型的输入:

1)字符串型(方法=QInputDialog.getText);

2)Int类型数据(方法=QInputDialog.getInt);

3)double类型数据(方法=QInputDialog.getDouble);

4)下拉列表框的条目(方法=QInputDialog.getItem)。

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

class QInputDialog(QDialog)

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

QInputDialog简介:

Qt提供了一个QInputDialog类,QInputDialogDialog类提供了一种简单方便的对话框来获得用户的单个输入信息,目前提供了4种数据类型的输入,可以使一个字符串、一个Int类型数据、一个double类型数据或者是一个下拉列表框的条目。一个标准输入对话框的基本结构如下图所示:

其中包含一个提示标签,一个输入控件。如实调用字符串输入框,则为一个QLineEdit;若是调用Int类型或都报了类型输入框,则为一个QSpinBox;若是调用列表条目输入框,则为一个QComboBox;还包括一个确定输入(OK)按钮和一个取消输入(Cancel)按钮。

QInputDialog的静态函数

1、getText()

QInputDialog的getText()函数弹出标准字符串输入对话框,getText()函数原型如下:

QString getText( QWidget * parent, #标准输入对话框的父窗口

const QString & title, #输入对话框的标题名

const QString & label,#标准输入对话框的标签提示

const QString & text = QString(), #标准字符串输入对话框弹出时QLineEdit控件中默认出现的文字

bool * ok = 0, #用于指示标准输入对话框的哪个按钮被触发,若ok为true,则表示用户单击了OK(确定)按钮,若ok为false,则表示用户单击了Cancel(取消)按钮

Qt::WindowFlags flags = 0, #知名标准输入对话框的窗体标识

Qt::InputMethodHints inputMethodHints = Qt::ImhNone ); [static]

2、getItem()

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

QString getItem( QWidget * parent, 标准输入对话框的父窗口

const QString & title, 标准输入对话框的标题名

const QString & label, 标准输入对话框的标签提示

const QStringList & list, 指定标准输入对话框中QComboBox控件显示的可选条目,为一个QStringList对象

int current = 0, 指定标准输入对话框中QComboBox控件显示的可选条目,为一个QStringList对象

bool editable = true, 指定QComboBox控件中显示的文字是否可编辑;

bool * ok = 0, 用于指定标准输入对话框的哪个那妞被触发,若ok为false,则表示用户单击了Cancel(取消)按钮;

Qt::WindowFlags f = 0 ) ; [static]用于指定标准输入对话框的哪个那妞被触发,若ok为false,则表示用户单击了Cancel(取消)按钮;

3、getInteger()

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

int getInteger( QWidget * parent, 父窗口

const QString & title,标题名

const QString & label, 标签提示

int value = 0, 指定标准输入对话框中QSpinBox控件默认显示值

int minValue = -2147483647,

int maxValue = 2147483647, 指定QSpinBoxBox控件的数值范围,最小和最大值

int step = 1, step指定QSpinBox控件的步进值(即步长)

bool * ok = 0,

Qt::WindowFlags f = 0 ) ;

4、getDouble()

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

double getDouble( QWidget * parent,

const QString & title,

const QString & label,标签提示

double value = 0, 指定标准输入对话框中QSpinBox控件默认显示值

double minValue = -2147483647,

double maxValue 2147483647,

int decimals = 1, 指定QSpinBox控件的浮动数的小数点位数

bool * ok = 0,

Qt::WindowFlags f = 0 ) ;

例子

1)字符串

def getText(self):
 text, okPressed = QInputDialog.getText(self, "Get text","Your name:", QLineEdit.Normal, "")
 if okPressed and text != '':
  print(text)

2)int

def getInteger(self):
  i, okPressed = QInputDialog.getInt(self, "Get integer","Percentage:", 28, 0, 100, 1)
  if okPressed:
   print(i)

3)double

def getDouble(self):
  d, okPressed = QInputDialog.getDouble(self, "Get double","Value:", 10.05, 0, 100, 10)
  if okPressed:
   print(d)

4)条目

def getChoice(self): #Get item/choice
 items = ("Red","Blue","Green")
 item, okPressed = QInputDialog.getItem(self, "Get item","Color:", items, 0, False)
 if okPressed and item:
  print(item)

简单例子1【引用出处】:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEdit
from PyQt5.QtGui import QIcon

class App(QWidget):

 def __init__(self):
  super().__init__()
  self.title = 'PyQt5 input dialogs - pythonspot.com'
  self.left = 10
  self.top = 10
  self.width = 640
  self.height = 480
  self.initUI()

 def initUI(self):
  self.setWindowTitle(self.title)
  self.setGeometry(self.left, self.top, self.width, self.height)

  self.getInteger()
  self.getText()
  self.getDouble()
  self.getChoice()

  self.show()

 def getInteger(self):
  i, okPressed = QInputDialog.getInt(self, "Get integer","Percentage:", 28, 0, 100, 1)
  if okPressed:
   print(i)

 def getDouble(self):
  d, okPressed = QInputDialog.getDouble(self, "Get double","Value:", 10.50, 0, 100, 10)
  if okPressed:
   print( d)

 def getChoice(self):
  items = ("Red","Blue","Green")
  item, okPressed = QInputDialog.getItem(self, "Get item","Color:", items, 0, False)
  if ok and item:
   print(item)

 def getText(self):
  text, okPressed = QInputDialog.getText(self, "Get text","Your name:", QLineEdit.Normal, "")
  if okPressed and text != '':
   print(text)

if __name__ == '__main__':
 app = QApplication(sys.argv)
 ex = App()
 sys.exit(app.exec_())

输入对话框使用例子2:

方法一>使用代码创建

————请参考 https://3water.com/article/163860.htm

方法二>使用Qt设计器创建

step1:使用Qt设计器创建GUI,如下图:

对PyQt5的输入对话框使用(QInputDialog)详解

说明:

第4行控件为:出生年月(label)——label_date——dateButton——Date Edit

最右上角的控件为LineEdit框,用于输入日期的,这是一个废弃的控件,没有来得及删除。

图中第二列(用label显示)和第四列(用lineEdit显示)的显示结果一样,且第四列还具有和按钮控件输入功能。

step2:保存为.ui文件,并将其转为myinputdialog.py文件,执行该文件;

myinputdialog.py文件中的类名为:

class Ui_Dialog(object):

def setupUi(self, Dialog):

step3:新建主函数文件为myinputdialogmain.py,在此文件中添加如下代码:

from PyQt5.QtWidgets import *
import sys
from MyInputDialog2 import Ui_Dialog

class MyDialog(QDialog,Ui_Dialog):
 def __init__(self):
  super(MyDialog,self).__init__()
  self.setupUi(self)
  self.setWindowTitle("输入对话框实验")

  #6个按钮
  self.nameButton.clicked.connect(self.inputName)
  self.sexButton.clicked.connect(self.inputSex)
  self.ageButton.clicked.connect(self.inputAge)
  self.dateButton.clicked.connect(self.inputDate2) # Date Edit
  self.dateButton.clicked.connect(self.inputDate1) #对话框
  self.HButton.clicked.connect(self.inputHeight)
  self.WButton.clicked.connect(self.inputWeight)
  #6个Label显示标签
  #label_name,label_sex,label_age,label_date,label_h,label_w
  #7个LineEdit编辑框用于输入信息,与上面按钮具有同样功能
  #namelineEdit,sexlineEdit,agelineEdit,datelineEdit,hlineEdit,wlineEdit,lovelineEdit


 def inputName(self):
  name2 = self.namelineEdit.text()
  name, ok = QInputDialog.getText(self, "用户名",
          "请输入新的名字:",
          QLineEdit.Normal, self.label_name.text())
  if ok:
   self.label_name.setText(name)
   self.namelineEdit.setText(name)
  else:
   self.label_name.setText(name2)

 def inputSex(self):
  list = []
  list.append("男")
  list.append("女")
  sex, ok = QInputDialog.getItem(self, "性别", "请选择性别", list)
  if ok:
   self.label_sex.setText(sex)
   self.sexlineEdit.setText(sex)

 def inputAge(self):
  age, ok = QInputDialog.getInt(self, "年龄","请输入年龄:",
          int(self.label_age.text()), 0, 150,4)

  if ok:
   self.label_age.setText(str(age))
   self.agelineEdit.setText(str(age))
 def inputDate1(self):
  dd, ok = QInputDialog.getText(self, "出生年月",
          "请输入新的出生年月:",
          QLineEdit.Normal, self.label_date.text())
  if ok:
   self.label_date.setText(dd)
   self.datelineEdit.setText(dd)
 def inputDate2(self):
  time = self.dateEdit.text()
  self.label_date.setText(str(time))

 def inputHeight(self):
  stature, ok = QInputDialog.getDouble(self, "身高",
            "请输入身高:",
            float(self.label_h.text()), -2300.0000, 2300.9999,4)
  if ok:
   self.label_h.setText(str(stature))
   self.hlineEdit.setText(str(stature))
 def inputWeight(self):
  stature, ok = QInputDialog.getDouble(self, "身高",
            "请输入身高:",
            float(self.label_w.text()), 0, 2300.00,2)
  if ok:
   self.label_w.setText(str(stature))
   self.wlineEdit.setText(str(stature))



if __name__ == "__main__":
 app = QApplication(sys.argv)
 main = MyDialog()
 main.show()
 sys.exit(app.exec_())

以上这篇对PyQt5的输入对话框使用(QInputDialog)详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中处理时间的几种方法小结
Apr 09 Python
详细解析Python当中的数据类型和变量
Apr 25 Python
python安装Scrapy图文教程
Aug 14 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
python 实现图片上传接口开发 并生成可以访问的图片url
Dec 18 Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
Python闭包的定义和使用方法
Apr 11 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 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
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 #Python
You might like
PHP数字格式化
2006/12/06 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
PHP加密解密字符串汇总
2015/04/26 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Python内置函数delattr的具体用法
2017/11/23 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python 日志模块logging的使用场景及示例
2021/01/04 Python
Python中生成ndarray实例讲解
2021/02/22 Python
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
《乌塔》教学反思
2014/02/17 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
2014市府办领导班子“四风问题”对照检查材料思想汇报
2014/09/24 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
PHP策略模式写法
2021/04/01 PHP