注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

互联网产品经理的窝

梦想社:一个人为了梦想,始终没有停下自己的脚步

 
 
 

日志

 
 

*PyQt4 精彩实例分析* 实例4 使用标准输入框  

2012-05-13 13:49:51|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本实例演示如何使用标准输入框,Qt提供了一个QInputDialog类,QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,目前提供了4种数据类型的输入,可以是一个字符串,一个Int类型数据,一个double类型数据或是一个下拉列表框的条目。其中包括一个提示标签,一个输入控件。若是调用字符串输入框,则为一个QLineEdit,若是调用Int类型或double类型,则为一个QSpinBox,若是调用列表条目输入框,则为一个QComboBox,还包括一个确定输入(Ok)按钮和一个取消输入(Cancel)按钮。

本实例的实现效果如下图:

*PyQt4 精彩实例分析* 实例4 使用标准输入框 - 梦想社 - 梦想社

实例中列举了以上4种输入类型,右则的按钮用于弹出标准输入对话框修改各条信息的值。具体实现代码如下所示:

[python] view plaincopy
  1. # -*- coding: utf-8 -*-  
  2. from PyQt4.QtCore import *  
  3. from PyQt4.QtGui import *  
  4. import sys  
  5.   
  6. QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))  
  7.   
  8. class InputDlg(QDialog):  
  9.     def __init__(self,parent=None):  
  10.         super(InputDlg,self).__init__(parent)  
  11.   
  12.         label1=QLabel(self.tr("姓名"))  
  13.         label2=QLabel(self.tr("性别"))  
  14.         label3=QLabel(self.tr("年龄"))  
  15.         label4=QLabel(self.tr("身高"))  
  16.   
  17.         self.nameLabel=QLabel("TengWei")  
  18.         self.nameLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)  
  19.         self.sexLabel=QLabel(self.tr("男"))  
  20.         self.sexLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)  
  21.         self.ageLabel=QLabel("25")  
  22.         self.ageLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)  
  23.         self.statureLabel=QLabel("168")  
  24.         self.statureLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)  
  25.   
  26.         nameButton=QPushButton("...")  
  27.         sexButton=QPushButton("...")  
  28.         ageButton=QPushButton("...")  
  29.         statureButton=QPushButton("...")  
  30.   
  31.         self.connect(nameButton,SIGNAL("clicked()"),self.slotName)  
  32.         self.connect(sexButton,SIGNAL("clicked()"),self.slotSex)  
  33.         self.connect(ageButton,SIGNAL("clicked()"),self.slotAge)  
  34.         self.connect(statureButton,SIGNAL("clicked()"),self.slotStature)  
  35.   
  36.         layout=QGridLayout()  
  37.         layout.addWidget(label1,0,0)  
  38.         layout.addWidget(self.nameLabel,0,1)  
  39.         layout.addWidget(nameButton,0,2)  
  40.         layout.addWidget(label2,1,0)  
  41.         layout.addWidget(self.sexLabel,1,1)  
  42.         layout.addWidget(sexButton,1,2)  
  43.         layout.addWidget(label3,2,0)  
  44.         layout.addWidget(self.ageLabel,2,1)  
  45.         layout.addWidget(ageButton,2,2)  
  46.         layout.addWidget(label4,3,0)  
  47.         layout.addWidget(self.statureLabel,3,1)  
  48.         layout.addWidget(statureButton,3,2)  
  49.   
  50.         self.setLayout(layout)  
  51.   
  52.         self.setWindowTitle(self.tr("资料收集"))  
  53.   
  54.     def slotName(self):  
  55.         name,ok=QInputDialog.getText(self,self.tr("用户名"),  
  56.                                      self.tr("请输入新的名字:"),  
  57.                                      QLineEdit.Normal,self.nameLabel.text())  
  58.         if ok and (not name.isEmpty()):  
  59.             self.nameLabel.setText(name)  
  60.   
  61.     def slotSex(self):  
  62.         list=QStringList()  
  63.         list.append(self.tr("男"))  
  64.         list.append(self.tr("女"))  
  65.         sex,ok=QInputDialog.getItem(self,self.tr("性别"),self.tr("请选择性别"),list)  
  66.   
  67.         if ok:  
  68.             self.sexLabel.setText(sex)  
  69.   
  70.     def slotAge(self):  
  71.         age,ok=QInputDialog.getInteger(self,self.tr("年龄"),  
  72.                                        self.tr("请输入年龄:"),  
  73.                                        int(self.ageLabel.text()),0,150)  
  74.         if ok:  
  75.             self.ageLabel.setText(str(age))  
  76.   
  77.     def slotStature(self):  
  78.         stature,ok=QInputDialog.getDouble(self,self.tr("身高"),  
  79.                                           self.tr("请输入身高:"),  
  80.                                           float(self.statureLabel.text()),0,2300.00)  
  81.         if ok:  
  82.             self.statureLabel.setText(str(stature))  
  83.   
  84. app=QApplication(sys.argv)  
  85. form=InputDlg()  
  86. form.show()  
  87. app.exec_()  
 

构造函数中声明了对话框中用到的控件以及各按钮触发的槽函数。

单击姓名后的修改按钮触发slotName()函数,弹出标准字符串输入对话框,如下图:

*PyQt4 精彩实例分析* 实例4 使用标准输入框 - 梦想社 - 梦想社

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

(QString, bool ok) QInputDialog.getText (QWidget, QString, QString, QLineEdit.EchoMode mode = QLineEdit.Normal, QString text = QString(), Qt.WindowFlags flags = 0)


此函数的第一个参数为标准输入对话框的父窗口,第二个参数为标准输入对话框的标题名,第三个参数为标准输入对话框的标签提示,第四个参数mode指定标准输入对话框中QLineEdit控件的输入模式,第五个参数text为标准字符串输入对话框弹出时QLineEdit控件默认出现的文字,最后一个参数指明标准输入对话框的窗体标识。

slotName()函数中的第3行判断ok的值,若用户单击了“OK”按钮,则把新输入的姓名更新至显示标签。

单击性别后的修改按钮触发slotSex()函数,弹出标准条目选择对话框,如下图:

*PyQt4 精彩实例分析* 实例4 使用标准输入框 - 梦想社 - 梦想社
 
 第1,2,3行创建一个QStringList对象,包括两个QString项,用于标准输入对话框中下拉列表框的条目显示。

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

(QString, bool ok) getItem (QWidget, QString, QString, QStringList, int current = 0, bool editable = True, Qt.WindowFlags flags = 0)
此函数的第一个参数为标准输入对话框的父窗窗口,第二个参数为标准输入对话框的标题名,第三个参数为标准输入对话框的标签提示,第四个参数指定标准输入对话框中QComboBox控件显示的可选条目,为一个QStringList对象,第五个参数current为标准条目选择对话框弹出时QComboBox控件中默认显示的条目序号,第六个参数editable指定QComboBox控件中显示的文字是否可编辑,最后一个参数指明标准输入对话框的窗体标识。

第6行判断ok的值,若用户单击了“OK”按钮,则把新输入的性别更新至显示标签。

单击年龄后的修改按钮触发slotAge()函数,弹出标准int类型输入对话框,如下图:

 *PyQt4 精彩实例分析* 实例4 使用标准输入框 - 梦想社 - 梦想社

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

(int, bool ok) getInteger (QWidget, QString, QString, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, Qt.WindowFlags flags = 0)
此函数的第一个参数为标准输入对话框的父窗窗口,第二个参数为标准输入对话框的标题名,第三个参数为标准输入对话框的标签提示,第四个参数value指定标准输入对话框中QSpinBox控件默认显示值,第五六个参数指定QSpinBox控件的数值范围,第七个参数step指定QSpinBox控件的步进值。

第4行判断ok的值,若用户单击了“OK”按钮,则把新输入的年龄值更新至显示标签。

单击身高后的修改按钮触发slotStature()函数,弹出标准double类型输入对话框,如下图:

*PyQt4 精彩实例分析* 实例4 使用标准输入框 - 梦想社 - 梦想社

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

(float, bool ok) getDouble (QWidget, QString, QString, float value = 0, float min = -2147483647, float max = 2147483647, int decimals = 1, Qt.WindowFlags flags = 0)

此函数的第一个参数为标准输入对话框的父窗窗口,第二个参数为标准输入对话框的标题名,第三个参数为标准输入对话框的标签提示,第四个参数value指定标准输入对话框中QSpinBox控件默认显示值,第五六个参数指定QSpinBox控件的数值范围,第七个参数decimals 指定QSpinBox控件的步进值。

第4行判断ok的值,若用户单击了“OK”按钮,则把新输入的身高值更新至显示标签。

 
  评论这张
 
阅读(379)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017