Qt 提供了一个 QInputDialog 类,QInputDialog 类提供了一种简单方面的对话框来获得用户的单个输入信息,目前提供了 4 种数据类型的输入,可以是一个字符串,一个 Int 类型数据,一个 double 类型数据或是一个下拉列表框的条目。
代码:
1 #coding: utf-8 2 from PyQt4.QtGui import * 3 from PyQt4.QtCore 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("jack") 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("175") 24 self.ageLabel.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 37 layout = QGridLayout() 38 layout.addWidget(label1, 0, 0) 39 layout.addWidget(self.nameLabel, 0, 1) 40 layout.addWidget(nameButton, 0, 2) 41 layout.addWidget(label2, 1, 0) 42 layout.addWidget(self.sexLabel, 1, 1) 43 layout.addWidget(sexButton, 1, 2) 44 layout.addWidget(label3, 2, 0) 45 layout.addWidget(self.ageLabel, 2, 1) 46 layout.addWidget(ageButton, 2, 2) 47 layout.addWidget(label4, 3, 0) 48 layout.addWidget(self.statureLabel, 3, 1) 49 layout.addWidget(statureButton, 3, 2) 50 51 self.setLayout(layout) 52 53 self.setWindowTitle(self.tr("资料收集")) 54 55 def slotName(self): 56 name,ok = QInputDialog.getText(self, self.tr("用户名"), self.tr("请输入新的名字:"), QLineEdit.Normal, self.nameLabel.text()) 57 if ok and (not name.isEmpty()): 58 self.nameLabel.setText(name) 59 60 def slotSex(self): 61 list = QStringList() 62 list.append(self.tr("男")) 63 list.append(self.tr("女")) 64 sex,ok = QInputDialog.getItem(self, self.tr("性别"), self.tr("请选择性别:"), list) 65 66 if ok: 67 self.sexLabel.setText(sex) 68 69 def slotAge(self): 70 age,ok = QInputDialog.getInteger(self,self.tr("年龄"), self.tr("请输入年龄:"), int(self.ageLabel.text()), 0, 150) 71 if ok: 72 self.ageLabel.setText(str(age)) 73 74 def slotStature(self): 75 stature,ok = QInputDialog.getDouble(self, self.tr("身高"), self.tr("请输入身高:"), float(self.statureLabel.text()), 0, 2300.00) 76 if ok: 77 self.statureLabel.setText(str(stature)) 78 79 app = QApplication(sys.argv) 80 form = inputDlg() 81 form.show() 82 app.exec_()