输入对话框QInputDialog
输人对话框 QImputDialog 用于输人简单内容或选择内容,分为整数输入框浮点数输人框、文本输人框、多行文本输入框和下拉列表输入框5种,它们的界面如图所示输人对话框由一个标签、一个输入控件和两个按钮构成。
- 如果是整数输人框,输人控件息QSpinBox;
- 如果是浮点数输人框,输入控件是 QDoubleSpinltox;
- 如果是单行文本输人框输入控件是 QlineEdit;
- 如果是多行文本输人框,输人控件是 QPinTextEdit,
- 如果是下物列表输入框,输入控件是 QComboBox 或 QListViw。
输人的类型用setInputMode(QInputDialog.InputMode)方法设置。
用QInputDialog 类创建输入框实例的方法如下所示
from PySide6.QtWidgets import QInputDialog
QInputDialog(self,parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None,flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags))-> None
详细说明
输入值可以是字符串、数字或列表中的项目。必须设置一个标签来告诉用户应该输入什么。
提供了五个静态便利函数:getText()、getMultiLineText(),getInt()、getDouble()和getItem()。所有功能都可以以类似的方式使用,例如:
text,ok = QInputDialog.getText(self,"QInputDialog.getText()",
"User name:",QLineEdit.Normal,
QDir.home().dirName())
if ok and text:
textLabel.setText(text)
如果用户单击"确定",则ok变量设置为true;否则,它被设置为false。
标准对话框示例显示了如何使用QInputDialog以及其他内置的Qt对话框。
输入对话框QInputDialog 的常用方法
输人对话框 QInputDialog 主要方法介绍如下:
-
输人对话框分为整数输入对话框、浮点数输人对话框和文本输人对话框,其中文本输人对话框又分为单行文本输人对话框、多行文本输人对话框和列表输人对话框列表输入对话框通常是从 QComboBox 控件或 QListWiew 控件中选择内容。
- 用setInputMode(QInputDialog.InputMode)方法设置输人对话框的类型,其中参数QInputDialog.InputMode 可以取:
- QInputDialog.IntInput(整数输人对话框)
- QInputDialog.Double(浮点数输入对话框)
- InputQInputDialog.TextInput(文本输入对话框)。
- 用setInputMode(QInputDialog.InputMode)方法设置输人对话框的类型,其中参数QInputDialog.InputMode 可以取:
-
对于整数输入对话框
- 用setIntValue(int)方法可以设置对话框初次显示时的值,用intValue()方法可以获取单击 OK 按后的整数值。
- 整数输入对话框中允许输人值的范围用setIntMinimum(int)、setIntMaximum(int)方法设置,或者用setIntRange(int,int)方法设置。
- 整数输人对话框的输入控件是 QSpinBox,单击右侧上下箭头可微调整数,微调整数值变化的步长用setIntStep(int)方法设置。
-
对于浮点数输人对话框
- 用setDoubleValue(lont)方法可以设置对话框初次显示时的值,
- 用doubleValue()方法可以获取单击 OK 按后的浮点数值。
- 浮点数对话框中允许输人值的范围用setDoubleMinimum(float)setDoubleMaximum(float)方法设置,或者用setDoubleRange(float,float)方法设置。
- 浮点数对话框的输入控件是QDoubleSpinBox,单击右侧上下头可微调数据,点数值变化的步长用setDoubleStep(float)方法设置。
-
对于文本输人对话框
- 默认的输入控件是 QLineEdit
- setOption(QInputDialog.UscPlainTextEditForTextInput)方法将 QLineEdit 控件换成 QPlainTextEdit,当用setComboBoxllems(Sequence[str])方法设置控件的项(item)时,输入控件替换成QComboBox,如果设置成 setOption(QInputDialog.UseListViewForComboBoxItems)则输入控件替换成 QListView。
-
对于文本输入对话框
- 用setTextValue(str)方法可以设置对话框中初始文本
- 用textValue()方法获取单击 OK 按后输人对话的值。
- 当输人控件是 QLineEdit时
- 用setTextEchoMode(QLineEdit,EchoMode)方法可以设置QLineEidt 控件的输人模式其中QLineEdit.EchoMode 可以取:
- QLineEdit.Norma(正常显示)
- QLineEdit.NoEcho(输人文字时,没有任何显示)
- QLineEdit.Password(输人文学时,按照密码方式显示)
- QLineEdit.PasswordEchoOnEdit(失去焦点时,密码显示状态,编辑文本时,正常显示)。
- 用setLabelText(str)方法设置输人对话框中标签显示的名称
- 用setOkButtonTex(str)方法和 setCancelButtonText(str)方法分别设置 OK 按和 Cancel 按钮的名称
- 用setOption(QInputDialog.NoButtons)方法设置成没有按钮。
- 用setTextEchoMode(QLineEdit,EchoMode)方法可以设置QLineEidt 控件的输人模式其中QLineEdit.EchoMode 可以取:
-
除了用以上方法显示和设置对话框的类型和外观外,还可以直接使用下面的静态数来显示对话框和获得返回值,其中
- title 是设置对话框的标题名称
- label是对话中标签的名称。
在对话框中单击 OK 按钮后,返回值是元组(输人值,True);
单击Cancel按钮后,返回值是元组(0,False)或(“”,False)
-
使用静态方法可以快速构建一个输入对话框,详见下节
输人对话框 QInputDialog 的常用方法如表所示:
QInputDialog的方法及参数类型 | 返回值的类型 | 说 明 |
---|---|---|
setInputMode(QInputDialog.InputMode) | None | 设置输入对话框的类型 |
setOption(QInputDialog.InputDialogOption,on=True) | None | 设置输人对话框的参数 |
testOption(QInputDialog.InputDialogOption) | bool | 测试是否设置某些参数 |
setLabelText(str) | None | 设置对话框中标签的名称 |
setOkButtonText(str) | None | 设置对话框中OK按钮的名称 |
setCancelButtonText(str) | None | 设置Cancel按钮的名称 |
setIntValue(int) | None | 设置对话框中初始整数 |
intValue() | int | 获取对话框中的整数 |
setIntMaximum(int) | None | 设置整数的最大值 |
setIntMinimum(int) | None | 设置整数的最小值 |
setlntRange(min: int,max:int) | None | 设置整数的范围 |
setIntStep(int) | None | 设置单击向上或向下箭头时整数调整的 步长 |
setDoubleValue(float) | None | 设置对话框中初始浮点数 |
doubleValue() | float | 获取对话框中的浮点数 |
setDoubleDecimals(int) | None | 设置浮点数的小数位数 |
setDoubleMaximum(float) | None | 设置浮点数的最大值 |
setDoubleMinimum(float) | None | 设置浮点数的最小值 |
setDoubleRange(min: float,max: float) | None | 设置浮点数的范围 |
setDoubleStep(float) | None | 设置单击向上或向下箭头时浮点数调整 的步长 |
setTextValue(str) | None | 设置对话框中初始文本 |
setComboBoxItems(Sequence[str]) | None | 设置下拉列表的值 |
textValue() | Str | 获取对话框中的文本 |
setTextEchoMode(QLineEdit.EchoMode) | None | 设置QLineEdit控件的输人模式 |
comboBoxItems() | List[str] | 获取下拉列表中的值 |
setComboBoxEditable(bool) | None | 设置下拉列表是否可编辑,用户是否可 输入数据 |
[static]getInt(parameters) | Tuple[int.bool] | 静态函数,显示输入对话框,并返回输入 的值和单击按钮的类型 |
[static]getDouble(parameters) | Tuple[float,bool] | 静态函数,显示输入对话框,并返回输入 的值和单击按钮的类型 |
[static]getText(parameters) | Tuple[str,bool] | 静态函数,显示输入对话框,并返回输入 的值和单击按钮的类型 |
[static]getMultiLineText(parameters) | Tuple[str,bool] | 静态函数,显示输入对话框,并返回输入 的值和单击按钮的类型 |
[static]getItem(parameters) | Tuple[str,bool] | 静态函数,显示输入对话框,并返回输入 的值和单击按钮的类型 |
输入对话框QInputDialog 的枚举值
-
PySide6.QtWidgets.QInputDialog.InputDialogOption
此枚举指定影响输入对话框外观的各种选项。
Constant Description QInputDialog.NoButtons 不要显示"确定"和"取消"按钮(对于"实时对话框"很有用)。 QInputDialog.UseListViewForComboBoxItems 使用QListView而不是不可编辑的QComboBox来显示。使用setComboBoxItems()设置的项目。 QInputDialog.UsePlainTextEditForTextInput 对多行文字输入使用QPlainTextEdit。该值在qt5.2中引入。 -
PySide6.QtWidgets.QInputDialog.InputMode
此枚举描述了可以为对话框选择的不同输入模式。
Constant Description QInputDialog.TextInput 用于输入文本字符串。 QInputDialog.IntInput 用于输入整数。 QInputDialog.DoubleInput 用于输入精度为双精度的浮点数字。
输入对话框QInputDialog 的静态方法
getDouble
getDouble(parent: PySide6.QtWidgets.QWidget,
title: str,
label: str,
value: float=0,
minValue: float=-2147483647,
maxValue: float=2147483647,
decimals: int=1,
flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags),
step: float=1
)-> Tuple[float,bool]
静态方便函数,用于从用户处获取浮点数。
title是显示在对话框标题栏中的文本。标签是显示给用户的文本(它应该说明应该输入什么)。value是线编辑将设置为的默认浮点值。min和max是用户可以选择的最小值和最大值。decimals是该数字可能具有的最大小数位数。step是当用户按下箭头按钮来增加或减少值时,值的变化量。
如果ok为非null,则如果用户按下ok,ok
将被设置为true,如果用户按下Cancel,ok
将被设为false。对话框的父级是父级。该对话框将是模态的,并使用小部件标志。
此函数返回用户输入的浮点数。
这样使用这个静态函数:
d,ok = QInputDialog.getDouble(self,"QInputDialog::getDouble()","Amount:",37.56,-10000,10000,2,Qt.WindowFlags(),1)
if ok:
doubleLabel.setText(f"${d}")
getInt
getInt(parent: PySide6.QtWidgets.QWidget,
title: str,
label: str,
value: int=0,
minValue: int=-2147483647,
maxValue: int=2147483647,
step: int=1,
flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags)
)-> Tuple[int,bool]
静态便利函数,用于从用户处获取整数输入。
title是显示在对话框标题栏中的文本。标签是显示给用户的文本(它应该说明应该输入什么)。value是spinbox将设置为的默认整数。min和max是用户可以选择的最小值和最大值。step是当用户按下箭头按钮来增加或减少值时,值的变化量。
如果ok为非null,则如果用户按下ok,"ok"将设置为true,如果用户按下Cancel,则"ok"设置为false。对话框的父级是父级。该对话框将是模态的,并使用小部件标志。
成功后,此函数返回用户输入的整数;失败时,返回初始值。
这样使用这个静态函数:
i,ok = QInputDialog.getInt(self,"QInputDialog::getInt()","Percentage:",25,0,100,1)
if ok:
integerLabel.setText(f"{i}")
getItem
getItem(parent: PySide6.QtWidgets.QWidget,
title: str,
label: str,
items: Sequence[str],
current: int=0,
editable: bool=True,
flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags),
inputMethodHints: PySide6.QtCore.Qt.InputMethodHint=Instance(Qt.ImhNone)
)-> Tuple[str,bool]
静态便利功能,让用户从字符串列表中选择一个项目。
title是显示在对话框标题栏中的文本。标签是显示给用户的文本(它应该说明应该输入什么)。items是插入到组合框中的字符串列表。current是应为当前项目的项目编号。inputMethodHints是在组合框可编辑且输入法处于活动状态时将使用的输入法提示。
如果可编辑为true,则用户可以输入自己的文本;否则,用户可以仅选择现有项目中的一个。
如果ok为非null,则如果用户按下ok,则ok将设置为true,如果用户按下Cancel,则ok将设置为false。对话框的父级是父级。该对话框将是模态的,并使用小部件标志。
此函数返回当前项的文本,如果可编辑为true,则返回组合框的当前文本。
这样使用这个静态函数:
items = ["Spring","Summer","Fall","Winter"]
item,ok = QInputDialog.getItem(self,"QInputDialog::getItem()","Season:",items,0,False)
if ok and item:
itemLabel.setText(item)
getMultiLineText
getMultiLineText(parent: PySide6.QtWidgets.QWidget,
title: str,
label: str,
text: str='',
flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags),
inputMethodHints: PySide6.QtCore.Qt.InputMethodHint=Instance(Qt.ImhNone)
)-> Tuple[str,bool]
静态便利函数,用于从用户处获取多行字符串。
title是显示在对话框标题栏中的文本。标签是显示给用户的文本(它应该说明应该输入什么)。text是放置在纯文本编辑中的默认文本。inputMethodHints是在输入法处于活动状态时将在编辑小部件中使用的输入法提示。
如果ok为非null,则如果用户按下ok,则ok将设置为true,如果用户按下Cancel,则ok将设置为false。对话框的父级是父级。该对话框将是模态的,并使用指定的小部件标志。
如果对话框被接受,此函数将返回对话框纯文本编辑中的文本。如果对话框被拒绝,则返回一个空的QString。
这样使用这个静态函数:
text,ok = QInputDialog.getMultiLineText(self,"QInputDialog.getMultiLineText()",""
"Address:","John Doe\nFreedom Street")
if ok and text:
multiLineTextLabel.setText(text)
getText
getText(parent: PySide6.QtWidgets.QWidget,
title: str,
label: str,
echo: PySide6.QtWidgets.QLineEdit.EchoMode=Instance(PySide6.QtWidgets.QLineEdit.Normal),
text: str='',flags: PySide6.QtCore.Qt.WindowType=Default(Qt.WindowFlags),
inputMethodHints: PySide6.QtCore.Qt.InputMethodHint=Instance(Qt.ImhNone)
)-> Tuple[str,bool]
静态便利函数,用于从用户处获取字符串。
title是显示在对话框标题栏中的文本。标签是显示给用户的文本(它应该说明应该输入什么)。text是放置在行编辑中的默认文本。模式是行编辑将使用的回波模式。inputMethodHints是在输入法处于活动状态时将在编辑小部件中使用的输入法提示。
如果ok为非null,则如果用户按下ok,则ok将设置为true,如果用户按下Cancel,则ok将设置为false。对话框的父级是父级。该对话框将是模态的,并使用指定的小部件标志。
如果对话框被接受,此函数将返回对话框行编辑中的文本。如果对话框被拒绝,则返回一个空的QString。
这样使用这个静态函数:
text,ok = QInputDialog.getText(self,"QInputDialog.getText()","User name:",QLineEdit.Normal,QDir.home().dirName())
if ok and text:
textLabel.setText(text)
输入对话框QInputDialog 的信号
输入对话框 QInputDialog 的信号如表所示。
对于3类型的输人对话框
- 单击 OK按钮时分别发送intValueSelected(int)、doubleValueSelected(float)和 textValueSelected(str)信号
- 编辑状态会分别发送intValueChanged(int)、doubleValueChanged(float)和 textValueChanged(str)信号
QInputDialog的信号及参数类型 | 说 明 |
---|---|
intValueChanged(int) | 每当对话框中的整数值发生变化时,就会发出此信号。当前值由值指定。 只有在IntInput模式下使用输入对话框时,此信号才相关。 |
intValueSelected(int) | 每当用户通过接受对话框来选择整数值时,就会发出该信号;例如通过点击OK按钮。所选值由值指定。 只有在IntInput模式下使用输入对话框时,此信号才相关。 |
doubleValueChanged(float) | 每当对话框中的双值发生变化时,就会发出此信号。当前值由值指定。 只有在双输入模式下使用输入对话框时,此信号才相关。 |
doubleValueSelected(float) | 每当用户通过接受对话框选择一个双值时,就会发出该信号;例如通过点击OK按钮。所选值由值指定。 只有在双输入模式下使用输入对话框时,此信号才相关。 |
textValueChanged(str) | 每当对话框中的文本字符串发生变化时,就会发出此信号。当前字符串由文本指定。 只有在TextInput模式下使用输入对话框时,此信号才相关。 |
textValueSelected(str) | 每当用户通过接受对话框来选择文本字符串时,就会发出该信号;例如通过点击OK按钮。所选字符串由文本指定。 只有在TextInput模式下使用输入对话框时,此信号才相关。 |