PyQ4标准输入框——QInputDialog(一)

来源:互联网 发布:安全期计算器软件 编辑:程序博客网 时间:2024/06/01 08:42
前面讲了标准文件对话框,这里就将标准输入对话框。
同样地,可以使用该类的静态方法,也可以自定义输入对话框。

首先看静态方法
1.Text方法
原型:
(QString, bool ok)getText (QWidget parent, QString title, QString label, QLineEdit.EchoMode echo = QLineEdit.Normal, QString text = QString(), Qt.WindowFlags f = 0)
title=窗口标题,label=提示标签,EchoMode=编辑模式,text=编辑框内的内容

#coding=utf-8from PyQt4.QtGui import *from PyQt4.QtCore import *import sysapp =   QApplication(sys.argv)Text,bool  =   QInputDialog.getText(None,"this is a static method",                                    "this is a tooltip label",QLineEdit.Normal,"Begin!")#用Text,bool分别存储QString和boolprint Text,boolapp.exec_()

第二种在编辑框什么都不会显示,但是可编辑。
第三种像编辑密码一样,全部是以*来代替字符。
第四种在编辑的时候会显示字符,但是打开对话框的编辑框会显示内容为*

2.Int方法
原型:
(int, bool ok)getInteger (QWidget parent, QString title, QString label, int value = 0, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, Qt.WindowFlags f = 0)


title=窗口标题,label=提示标签, value=设置编辑框显示的值,minValue=编辑框显示最小的值,maxValue=编辑框显示的最大值,
step=步长,该编辑框会以QSpinBox的形式显示。
3.Double方法
原型:
(float, bool ok)getDouble (QWidget parent, QString title, QString label, float value = 0, float minValue = -2147483647, float maxValue = 2147483647, int decimals = 1, Qt.WindowFlags f = 0)
decimals=显示的小数点位数

4.Item方法
原型:
(QString, bool ok)getItem (QWidget parent, QString title, QString label, QStringList list, int current = 0, bool editable = True, Qt.WindowFlags f = 0)
list=事先建好的列表,current=显示列表内对应序号的值,editable=是否可以直接在编辑框编辑


#coding=utf-8import sysfrom PyQt4.QtGui import *from PyQt4.QtCore import *QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))class InputDlg(QDialog):    def __init__(self,parent=None):        super(InputDlg,self).__init__(parent)        label1=QLabel(self.tr("姓名"))        label2=QLabel(self.tr("性别"))        label3=QLabel(self.tr("年龄"))        label4=QLabel(self.tr("身高"))        self.nameLabel=QLabel("TengWei")        self.nameLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)#设置标签的样式        self.sexLabel=QLabel(self.tr("男"))        self.sexLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)        self.ageLabel=QLabel("25")        self.ageLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)        self.statureLabel=QLabel("168")        self.statureLabel.setFrameStyle(QFrame.Panel|QFrame.Sunken)        nameButton=QPushButton("...")        sexButton=QPushButton("...")        ageButton=QPushButton("...")        statureButton=QPushButton("...")        self.connect(nameButton,SIGNAL("clicked()"),self.slotName)        self.connect(sexButton,SIGNAL("clicked()"),self.slotSex)        self.connect(ageButton,SIGNAL("clicked()"),self.slotAge)        self.connect(statureButton,SIGNAL("clicked()"),self.slotStature)        layout=QGridLayout()        layout.addWidget(label1,0,0)        layout.addWidget(self.nameLabel,0,1)        layout.addWidget(nameButton,0,2)        layout.addWidget(label2,1,0)        layout.addWidget(self.sexLabel,1,1)        layout.addWidget(sexButton,1,2)        layout.addWidget(label3,2,0)        layout.addWidget(self.ageLabel,2,1)        layout.addWidget(ageButton,2,2)        layout.addWidget(label4,3,0)        layout.addWidget(self.statureLabel,3,1)        layout.addWidget(statureButton,3,2)        self.setLayout(layout)        self.setWindowTitle(self.tr("资料收集"))    def slotName(self):        name, ok = QInputDialog.getText(self, self.tr("用户名"), self.tr("请输入新的名字:"),                                        QLineEdit.Normal, self.nameLabel.text())        print ok        if ok and (not name.isEmpty()):            self.nameLabel.setText(name)    def slotSex(self):        list=QStringList()        list.append(self.tr("男"))        list.append(self.tr("女"))        sex,ok=QInputDialog.getItem(self,self.tr("性别"),self.tr("请选择性别"),list,0,False)        if ok:            self.sexLabel.setText(sex)    def slotAge(self):        age,ok=QInputDialog.getInteger(self,self.tr("年龄"),self.tr("请输入年龄"),                                       int(self.ageLabel.text()),0,150)        if ok:            self.ageLabel.setText(str(age))    def slotStature(self):        stature,ok=QInputDialog.getDouble(self,self.tr("身高"),self.tr("请输入身高"),                                          float(self.statureLabel.text()),0.00,2300.00,2)        if ok:            self.statureLabel.setText(str(stature))app = QApplication(sys.argv)form=InputDlg()form.show()app.exec_()


原创粉丝点击