12-窗口、窗口控件、对话框以及相关功能类-输入对话框QInputDialog

输入对话框QInputDialog

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。

../../_images/inputdialogs.png

标准对话框示例显示了如何使用QInputDialog以及其他内置的Qt对话框。

输入对话框QInputDialog 的常用方法

输人对话框 QInputDialog 主要方法介绍如下:

  • 输人对话框分为整数输入对话框、浮点数输人对话框和文本输人对话框,其中文本输人对话框又分为单行文本输人对话框、多行文本输人对话框和列表输人对话框列表输入对话框通常是从 QComboBox 控件或 QListWiew 控件中选择内容。

    • 用setInputMode(QInputDialog.InputMode)方法设置输人对话框的类型,其中参数QInputDialog.InputMode 可以取:
      • QInputDialog.IntInput(整数输人对话框)
      • QInputDialog.Double(浮点数输入对话框)
      • InputQInputDialog.TextInput(文本输入对话框)。
  • 对于整数输入对话框

    • 用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)方法设置成没有按钮。
  • 除了用以上方法显示和设置对话框的类型和外观外,还可以直接使用下面的静态数来显示对话框和获得返回值,其中

    • 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

    此枚举指定影响输入对话框外观的各种选项。

    ConstantDescription
    QInputDialog.NoButtons不要显示"确定"和"取消"按钮(对于"实时对话框"很有用)。
    QInputDialog.UseListViewForComboBoxItems使用QListView而不是不可编辑的QComboBox来显示。使用setComboBoxItems()设置的项目。
    QInputDialog.UsePlainTextEditForTextInput对多行文字输入使用QPlainTextEdit。该值在qt5.2中引入。
  • PySide6.QtWidgets.QInputDialog.InputMode

    此枚举描述了可以为对话框选择的不同输入模式。

    ConstantDescription
    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模式下使用输入对话框时,此信号才相关。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值