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

前面讲了标准文件对话框,这里就将标准输入对话框。
同样地,可以使用该类的静态方法,也可以自定义输入对话框。

首先看静态方法
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-8
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys

app =   QApplication(sys.argv)
Text,bool  =   QInputDialog.getText(None,"this is a static method",
                                    "this is a tooltip label",QLineEdit.Normal,"Begin!")#用Text,bool分别存储QString和bool
print Text,bool
app.exec_()

PyQ4标准输入框——QInputDialog(一)_第1张图片
第二种在编辑框什么都不会显示,但是可编辑。
第三种像编辑密码一样,全部是以*来代替字符。
第四种在编辑的时候会显示字符,但是打开对话框的编辑框会显示内容为*

PyQ4标准输入框——QInputDialog(一)_第2张图片
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的形式显示。
PyQ4标准输入框——QInputDialog(一)_第3张图片
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=显示的小数点位数

PyQ4标准输入框——QInputDialog(一)_第4张图片
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=是否可以直接在编辑框编辑

PyQ4标准输入框——QInputDialog(一)_第5张图片

#coding=utf-8
import sys
from 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_()


你可能感兴趣的:(#,PyQt(停更))