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

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:

方法一>使用代码创建

————请参考 lianjie

方法二>使用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 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)详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 基于PyQt4和PySide实现输入对话框效果

    今天做了个基于PyQt4和PySide的输入对话框.已放到PyPi中,包名wlab,大家可以使用pip安装: pip install wlab 在程序输入中,有时会要求同时改变多个参数值,而且类型也不尽相同, 这时下面的模块比较彻底的解决了这个问题.先看个示例吧. 比如我们有三个参数,分别为int,float,和字符串类型: values={'String':'This is String','float':3.5,'int':15} GroupBoxTitle='Please set valu

  • PyQt打开保存对话框的方法和使用详解

    PyQt之打开保存对话框(QFileDialog)的方法和使用 一.控件说明 QFileDialog是用于打开和保存文件的标准对话框,继承自QDialog类. QFileDialog在打开文件时使用了文件过滤器,用于显示指定扩展名的文件,也可以设置使用QFileDialog打开文件时的起始文件路径和指定扩展名. 二.QFileDialog类的常用方法 getOpenFileName(): 返回用户所选择文件的名称并打开该文件 getSaveFileName(): 使用用户选择的文件名并保存文件

  • PyQt弹出式对话框的常用方法及标准按钮类型

    PyQt之弹出式对话框(QMessageBox)的常用方法及标准按钮类型 一.控件说明 QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈,且每个标准按钮都有一个预定义的文本.角色和十六进制数. QNessageBox类提供了如:提示.警告.错误.问询.关于等对话框(这些不同类型的对话框只是显示的图标不同其他功能均一致) 二.QMessageBox类中的常用方法 infomation(QWidget parent,title text,bu

  • PyQt5 窗口切换与自定义对话框的实例

    近日,需要实现一个功能小而全的桌面版软件,所以选中并尝试了PyQt5这个GUI库.在使用中发现,其功能的确完备,但这方面的资料的确不多,有时自己想实现的功能相关资料找不到,有的还不得不阅读C++的实现代码.PyQt5的文档也都是指向C++版的文档.一段时间做下来,特将有关解决方法记录下来,以将来备查,也随手帮助下后来者. 一般来说,GUI软件都是需要不同的工作界面之间进行切换的,当然也少不了布局等功能的使用.Qt的布局功能理解起来也很容易,使用的基本方法是: 1.建立容器部件: 2.建立布局类,

  • Python PyQt5标准对话框用法示例

    本文实例讲述了Python PyQt5标准对话框用法.分享给大家供大家参考,具体如下: 很全的Qt的标准对话框,包含QInputDialog.QColorDialog.QFontDialog.QMessageBox.QOpenFileDialog... 全部是由官网的C++版本,转换成PyQt5版本. 有些细节忽略了,因为实在不知怎么转换过来.捣鼓了一晚上,总算完成了,好累啊,不过很开心! 效果图: 完整代码: # -*- coding: utf-8 -*- from PyQt5.QtGui i

  • PyQt5打开文件对话框QFileDialog实例代码

    本文研究的主要是PyQt5打开文件对话框QFileDialog的代码示例,具体如下. 单个文件打开 QFileDialog.getOpenFileName() 多个文件打开 QFileDialog.getOpenFileNames() 文件夹选取 QFileDialog.getExistingDirectory() 文件保存 QFileDialog.getSaveFileName() 实例代码: from PyQt5 import QtWidgets from PyQt5.QtWidgets i

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

    PyQt5中QInputDialog的使用,Qt的QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,它提供了4种数据类型的输入: 1)字符串型(方法=QInputDialog.getText): 2)Int类型数据(方法=QInputDialog.getInt): 3)double类型数据(方法=QInputDialog.getDouble): 4)下拉列表框的条目(方法=QInputDialog.getItem). QInputDialog继承自QDialog,提供

  • Python深度学习实战PyQt5安装与环境配置过程详解

    目录 1. PyQt5 图形界面开发工具 1.1 从 CLI 到 GUI 1.2 PyQt5 开发工具 2. 安装 PyQt5 和 QtTools pip 安装 PyQt5 pip 安装 QtTools 3. QtDesigner 和 PyUIC 的环境配置 3.1 在 PyCharm 添加 Create Tools 3.2 添加 QtDesigner 工具 3.3 添加 PyUIC 工具 4. QtDesigner 和 PyUIC 的快速入门 4.1 QtDesigner 的启动和入门 新建一

  • C语言数据输入与输出实例详解

    C语言数据输入与输出实例详解 1 概论 C语言提供了跨平台的数据输入输出函数scanf()和printf()函数,它们可以按照指定的格式来解析常见的数据类型,例如整数,浮点数,字符和字符串等等.数据输入的来源可以是文件,控制台以及网络,而输出的终端可以是控制台,文件甚至是网页. 2 数据输出 从第一个c语言程序中,就使用了跨平台的库函数printf实现将一段文字输出到控制台,而实际上,printf()不仅可以将数据按照指定的格式输出到控制台,还可以是网页或者是指定的文件中,printf()函数执

  • Java和C#输入输出流的方法(详解)

    1,Java中操作方法: import java.io.*; public class FileInputStreamTest { public static void main(String[] args) throws IOException { //创建字节输入流 FileInputStream fis = new FileInputStream("FileInputStreamTest.java"); //创建一个长度为1024的竹筒 byte[] bbuf = new byt

  • 对pyqt5多线程正确的开启姿势详解

    如下所示: # -*- coding: utf-8 -*- import sys from PyQt5.QtCore import QThread, pyqtSignal from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QMessageBox, \ QPushButton, QLineEdit, QLabel, QToolTip, QComboBox, QTextEdit class MyBeautifulClass

  • 对PyQt5中树结构的实现方法详解

    树的实质是很多条数据按照一定的内在关系,分层级显示出来.因此每一条数据包括数据项和相互关系.数据项就对应了树中的column,而相互关系对应的是应该显示在哪一个条目下. PyQt5中,树的实现有两种形式,其中较为简单的是使用Tree Widget控件. 对于静态的数据,实现树结构可以直接在Qt中拖入一个Tree Widget控件,然后右键点击它,选择编辑. 其中column是每一条数据有几个数据项,Item体现的是数据和数据之间是什么关系. 对于我们需要从数据库中查出来的数据,我么需要根据实际的

  • 对pyqt5中QTabWidget的相关操作详解

    首先,下面贴上designer处理的界面文件(转换成py后的): # -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'TabWidget.ui' # # Created by: PyQt5 UI code generator 5.12.1 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtC

  • PyQT5 emit 和 connect的用法详解

    对于PyQT4, PyQT5在一些使用上有着比较明显的变化有很大的变化,让人惊讶是在emit和connect上的一些变化比较有意思,相信也是QT为了更好的和Python相结合做的改进. 先上一张图: 出现 AttributeError: 'TCPWindow' object has no attribute 'connect' 这个问题说明了PyQT5不在支持PyQT4的链接信号槽方式! 对于emit使用如下: class Server(QTcpServer): updateServer= py

  • PyQt5信号与槽机制案例详解

    信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解.信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方. 信号和槽是用来在对象间传递数据的方法:当一个特定事件发生的时候,信号会被发射出来,槽调用是用来响应相应的信号的.Qt中对象已经包含了许多预定义的信号(基本组件都有各自特有的预定义的信号),根据使用的场景也可以添加新的信号.同样Qt的对象中已经包含了许多预定义的槽函数,但也可以根据使用的场景添加新的槽函数. 一

  • Python实现全自动输入文本的示例详解

    目录 1. 效果图 2. 示例代码 3. 代码解释 1. 效果图 该Python脚本可以实现自动用Notepad++打开文本文件,然后自动输入文本,最后保存并关闭文件,从而实现全面自动化处理文本. 2. 示例代码 Python脚本源码如下,主要使用了win32gui.win32con和win32api模块 import win32gui import win32con import win32api import time ret = win32api.ShellExecute(1, 'open

随机推荐