使用标准输入对话框

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_()
原文地址:https://www.cnblogs.com/nju2014/p/4493098.html