天天看点

PyQt5 输入对话框QInputDialog

本篇介绍 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字符串,是否确定

具体的运用可参考以下代码:

PyQt5 输入对话框QInputDialog

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_())