前面讲了标准文件对话框,这里就将标准输入对话框。
同样地,可以使用该类的静态方法,也可以自定义输入对话框。
首先看静态方法
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_()
第二种在编辑框什么都不会显示,但是可编辑。
第三种像编辑密码一样,全部是以*来代替字符。
第四种在编辑的时候会显示字符,但是打开对话框的编辑框会显示内容为*
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-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_()