0%

PyQt4--《十四》输入对话框QInputDialog

输入对话框是一个预配置的对话框,有一个文本框和两个按钮OK和Cancel。当用户点击OK或者回车时,父窗口就把输入收集到文本框中。
用户的输入可以是一个数字、字符串或者从列表中选择的项目。

QInputDialog的函数

  • getInt():创建一个用于整数的spin box
  • getDouble():创建一个用于浮点数的spin box
  • getText():一个简单的行编辑区域用于输入文本
  • getItem():可以从中选择某项的combo box

QInputDialog的信号

该对话框实际上是其他widget的整合,所以没有自己的信号

栗子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#-*-coding:utf-8-*-
#-*-coding:utf-8-*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class window(QWidget):
def __init__(self, parent=None):
super(window, self).__init__(parent)
self.init()

def init(self):
layout = QFormLayout()
self.btn = QPushButton("Choose from list")
self.btn.clicked.connect(self.getItem)

self.le = QLineEdit()
layout.addRow(self.btn, self.le)
self.btn1 = QPushButton("get name")
self.btn1.clicked.connect(self.gettext)

self.le1 = QLineEdit()
layout.addRow(self.btn1, self.le1)
self.btn2 = QPushButton("Enter an integer")
self.btn2.clicked.connect(self.getint)

self.le2 = QLineEdit()
layout.addRow(self.btn2, self.le2)
self.setLayout(layout)
self.setWindowTitle("Input Dialog demo")

def getItem(self):
items = ("C", "C++", "Java", "Python")

item, ok = QInputDialog.getItem(self, "select input dialog",
"list of languages", items, 0, False)

if ok and item:
self.le.setText(item)

def gettext(self):
text, ok = QInputDialog.getText(self, 'Text Input Dialog', 'Enter your name:')

if ok:
self.le1.setText(str(text))

def getint(self):
num, ok = QInputDialog.getInt(self, "integer input dualog", "enter a number")

if ok:
self.le2.setText(str(num))
def main():
app = QApplication(sys.argv)
ex = window()
ex.show()
sys.exit(app.exec_())

if __name__ == '__main__':
main()