侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

Python  /  管理员 发布于 5年前   558

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 sysfrom PyQt5.QtWidgets import QApplication, QWidget, QInputDialog, QLineEditfrom PyQt5.QtGui import QIconclass 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:///article/163860.htm

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

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

说明:

第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 sysfrom MyInputDialog2 import Ui_Dialogclass 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)详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


  • 上一条:
    Pyqt5 基本界面组件之inputDialog的使用
    下一条:
    pyqt5 删除layout中的所有widget方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客