本篇介绍 PyQt5 中 QInputDialog 类的四种对话框。
1). 整数输入框
(int, bool ok) QInputDialog.getInt (QWidget parent, QString title, QString label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, Qt.WindowFlags flags = 0)
参数有:父控件,标题,标签文本,初始值,最小值,最大值,微调框步长,窗口样式。
返回值:当前整数,是否确定
2)浮点数输入框
(float, bool ok) QInputDialog.getDouble (QWidget parent, QString title, QString label, float value = 0, float min = -2147483647, float max = 2147483647, int decimals = 1, Qt.WindowFlags flags = 0)
参数有:父控件,标题,标签文本,初始值,最小值,最大值,小数点后位数,窗口样式。
返回值:当前浮点数,是否确定
3)字符串输入框
(str, bool ok) QInputDialog.getText (QWidget parent, QString title, QString label,QLineEdit.EchoMode mode = QLineEdit.Normal,QString text = QString(), Qt.WindowFlags flags = 0)
参数有:父控件,标题,标签文本, 显示模式,初始字符串,窗口样式
其中显示模式有4种类型:
QLineEdit.Normal 正常模式,默认
QLineEdit.NoEcho 完全不显示输入内容,防止密码被偷窥,甚至连密码长度都隐藏
QLineEdit.Password 以星号显示所输入的字符
QLineEdit.PasswordEchoOnEdit 只在显示初始值或编辑完(QLineEdit失去焦点)后显示星号
返回值:当前字符串,是否确定
4)下拉列表对话框
(str, bool ok) InputDialog.getItem (QWidget parent, QString title, QString label, QStringList list, int current = 0, bool editable = True, Qt.WindowFlags flags = 0)
参数有:父控件,标题,标签文本,item字符串列表,初始索引,是否可编辑,窗口样式。
返回值:当前item字符串,是否确定
具体的运用可参考以下代码:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcugHMxQTMw0mMkV3LcJDM2ITO2EzLcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton,QInputDialog,QVBoxLayout,QLineEdit
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 input dialogs'
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
vlayout =QVBoxLayout()
bt1 = QPushButton("整数输入框")
bt2 = QPushButton("浮点数输入框")
bt3 = QPushButton("字符串输入框")
bt4 = QPushButton("下拉列表对话框")
vlayout. addWidget(bt1)
vlayout. addWidget(bt2)
vlayout. addWidget(bt3)
vlayout. addWidget(bt4)
self.setLayout(vlayout)
bt1.clicked.connect(self.getInteger)
bt2.clicked.connect(self.getDouble)
bt3.clicked.connect(self.getText)
bt4.clicked.connect(self.getChoice)
self.resize(300,100)
def getInteger(self):
i, okPressed = QInputDialog.getInt(self, "Get integer","输入整数:", 2, 0, 100, 1)
if okPressed:
print(i)
def getDouble(self):
d, okPressed = QInputDialog.getDouble(self, "Get double","Value:", 10.50, 0, 100, 5)
if okPressed:
print( d)
def getText(self):
text, okPressed = QInputDialog.getText(self, "Get text","Your name:", QLineEdit.PasswordEchoOnEdit, "initiaial text")
if okPressed:
print(text)
print(type(text))
def getChoice(self):
items = ["春","夏","秋","冬"]
item, okPressed = QInputDialog.getItem(self, "Get item","季节:", items, 1, False)
if okPressed :
print(item)
if __name__ == '__main__':
app = QApplication(sys.argv)
haha = App()
haha.show()
sys.exit(app.exec_())