热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

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:

方法一>使用代码创建

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

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

20190625095230.jpg

说明:

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



推荐阅读
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
author-avatar
jzbde
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有