063.PyQt5_QInputDialog_输入对话框

QInputDialog 输入对话框

  • 描述
    • 提供了一个简单方便的对话框,获得来自用户的单个值
    • 输入值可以是字符串,数字或列表中的项目
    • 设置标签以告知用户应输入的内容
  • 继承自:QDialog
  • 功能作用
    • 常用的静态方法
      # 打开一个输入Int类型数据的对话框,返回包含输入的数据和是否按下确认按钮的元组
      getInt(parent, str, str, value, min, max, step, flags)  -> Tuple[int, bool]
      # getDouble(父对象, 标题, 提示内容, 默认值, 最小值, 最大值, 步长, 窗口标志位设置)
      # getInt(QWidget, str, str, value: int = 0, min: int = -2147483647, max: int = 2147483647, step: int = 1, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()) -> Tuple[int, bool]
      
      # 打开一个输入Double类型数据的对话框,返回包含输入的数据和是否按下确认按钮的元组
      getDouble(parent, str, str, value, min, max, decimals, flags) -> Tuple[float, bool]
      # getDouble(父对象, 标题, 提示内容, 默认值, 最小值, 最大值, 小数位数, 窗口标志位设置)
      # getDouble(QWidget, str, str, value: float = 0, min: float = -2147483647, max: float = 2147483647, decimals: int = 1, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags()) -> Tuple[float, bool]
      
      # 打开一个输入Str类型数据的单行文本对话框,返回包含输入的内容和是否按下确认按钮的元组
      getText(parent, str, str, echo, text, flags, inputMethndHints) -> Tuple[str, bool]
      # getText(父对象, 标题, 提示内容, 内容显示模式(明文/密文), 默认值, 窗口标志位设置, )
      # getText(QWidget, str, str, echo: QLineEdit.EchoMode = QLineEdit.Normal, text: str = '', flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags(), inputMethodHints: Union[Qt.InputMethodHints, Qt.InputMethodHint] = Qt.ImhNone) -> Tuple[str, bool]
      
      # 打开一个输入Str类型数据的多行文本对话框,返回包含输入的内容和是否按下确认按钮的元组
      getMultiLineText(parent, str, str, text, flags, inputMethndHints)  -> Tuple[str, bool]
      # getText(父对象, 标题, 提示内容, 默认值, 窗口标志位设置, )
      # getMultiLineText(QWidget, str, str, text: str = '', flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags(), inputMethodHints: Union[Qt.InputMethodHints, Qt.InputMethodHint] = Qt.ImhNone) -> Tuple[str, bool]
      
      # 打开一个下拉列表选项框对话框,返回包含选择的条目内容和是否按下确认按钮的元组
      getItem(parent, str, str, Iterable[str], current, editable, flags, inputMethodHints)
      # getItem(父对象, 标题, 提示内容, 迭代器设置下拉选项内容, 默认显示第几条, 下拉框是否可以被编辑, 窗口标志位设置,)
      # getItem(QWidget, str, str, Iterable[str], current: int = 0, editable: bool = True, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags(), inputMethodHints: Union[Qt.InputMethodHints, Qt.InputMethodHint] = Qt.ImhNone) -> Tuple[str, bool]
      
    • 构造函数
      QInputDialog(parent: QWidget = None, flags: Union[Qt.WindowFlags, Qt.WindowType] = Qt.WindowFlags())
      
    • 选项设置
      setOption(self, QInputDialog.InputDialogOption, on: bool = True)                                # 设置选项,指定选项是否生效
      setOptions(self, Union[QInputDialog.InputDialogOptions, QInputDialog.InputDialogOption])        # 设置多个选项
      # 参数 QInputDialog.InputDialogOption
      #       QInputDialog.NoButtons                              # 不显示“ 确定”和“ 取消”按钮(对“实时对话框”有用)。
      #       QInputDialog.UseListViewForComboBoxItems            # 使用QListView而不是不可编辑的QComboBox来显示使用setComboBoxItems()设置的项目。
      #       QInputDialog.UsePlainTextEditForTextInput           # 使用QPlainTextEdit进行多行文本输入。该值在5.2中引入。
      
      testOption(self, QInputDialog.InputDialogOption) -> bool                                        # 测试选项是否生效
      options(self) -> QInputDialog.InputDialogOptions                                                # 获取所有生效选项
      
    • 输入模式
      setInputMode(self, QInputDialog.InputMode)                  # 设置输入模式
      # 参数QInputDialog.InputMode
      #       TextInput:                                         # 输入文本
      #        IntInput:                                         # 输入Int类型数据
      #     DoubleInput:                                         # 输入Double类型数据
      
      inputMode(self) -> QInputDialog.InputMode                   # 获取输入模式
      
      # 示例
      inputd1.setInputMode(QInputDialog.TextInput)                    # 单行文本模式
      inputd2.setInputMode(QInputDialog.IntInput)                     # Int类型数据
      inputd3.setInputMode(QInputDialog.DoubleInput)                  # Double类型数据
      inputd4.setComboBoxItems(['1','2','3'])                         # 直接设置下拉选项使其成下拉选项对话框
      inputd5.setOption(QInputDialog.UseListViewForComboBoxItems)     # 通过选项设置,设置ComboBox显示为QListView模式
      inputd5.setComboBoxItems(['a','b','c'])
      
    • 界面文本设置
      setLabelText(str)                                           # 设置提示内容文本
      labelText(self) -> str                                      # 获取提示内容文本
      
      setOkButtonText(str)                                        # 设置确定按钮文本
      setCancelButtonText(str)                                    # 设置取消按钮文本
      
    • 各个小分类设置
      • 字符串
        setTextEchoMode(self, QLineEdit.EchoMode)               # 设置内容显示模式
        textEchoMode(self) -> QLineEdit.EchoMode                # 获取内容显示模式
        
        setTextValue(self, str)                                 # 设置默认显示内容
        textValue(self) -> str                                  # 获取默认显示内容
        
      • 整型
        setIntMaximum(self, int)                                # 设置最大值
        intMaximum(self) -> int                                 # 获取最大值
        
        setIntMinimum(self, int)                                # 设置最小值
        intMinimum(self) -> int                                 # 获取最小值
        
        setIntRange(self, int, int)                             # 设置一个取值范围
        
        setIntStep(self, int)                                   # 设置步长
        intStep(self) -> int                                    # 获取步长
        
        setIntValue(self, int)                                  # 设置显示默认值
        intValue(self) -> int                                   # 获取显示默认值
        
      • 浮点型
        setDoubleMaximum(self, float)                           # 设置最大值
        doubleMaximum() -> float                                # 获取最大值
        
        setDoubleMinimum(self, float)                           # 设置最小值
        doubleMinimum(self) -> float                            # 获取最小值
        
        setDoubleRange(self, float, float)                      # 设置一个取值范围
                    
        setDoubleDecimals(self, int)                            # 设置保留小数位
        doubleDecimals() -> int                                 # 获取保留小数位
        
        setDoubleStep(self, float)                              # 设置步长
        doubleStep(self) -> float                               # 获取步长
        
        setDoubleValue(self, float)                             # 设置显示默认值
        doubleValue(self) -> float                              # 获取显示默认值
        
      • 下拉列表
        setComboBoxItems(self, Iterable[str])                   # 通过迭代器设置下拉列表选项
        comboBoxItems(self) -> List[str]                        # 获取下拉列表选项,返回列表
        
        setComboBoxEditable(self, bool)                         # 设置下拉框是否可以编辑
        isComboBoxEditable(self) -> bool                        # 判断下拉框是否可以编辑
        
  • 可用信号
    intValueChanged(int value)                                      # 整形数据对话框,值发生改变时发射信号,传递当前值
    intValueSelected(int value)                                     # 整形数据对话框,值最终被选中时发射信号,传递当前值
    
    doubleValueChanged(double value)                                # Double类型数据对话框,值发生改变时发射信号,传递当前值
    doubleValueSelected(double value)                               # Double类型数据对话框,值最终被选中时发射信号,传递当前值
    
    textValueChanged(text_str)                                      # 文本对话框,值发生改变时发射信号,传递当前值
    textValueSelected(text_str)                                     # 文本对话框,值最终被选中时发射信号,传递当前值
    

  • 代码示例
  • 示例1:QInputDialog-静态方法
    from PyQt5.Qt import *
    import sys
    
    class Window(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('QInputDialog-静态方法')
            self.resize(500, 300)
            self.setWindowIcon(QIcon('../ico/logo.ico'))
            self.method_list()
    
        def method_list(self):
            self.child_add()
    
        def child_add(self):
            # result = QInputDialog.getInt(self, 'Int类型输入框', '请输入一个整数', 5, 1, 20, 2)
            # result = QInputDialog.getDouble(self, 'Double输入框','请输入一个小数',1.35, decimals=3)
            # result = QInputDialog.getText(self, '单行文本输入框','请输入内容', echo=QLineEdit.PasswordEchoOnEdit, text='请输入你的姓名')
            # result = QInputDialog.getMultiLineText(self, '多行文本输入框','请输入详细信息','这里输入详细信息')
            result = QInputDialog.getItem(self,'下拉选项对话框','请选择你的信息',['湖南','湖北','四川','广东'],current=3,editable=True)
            if result[1]:
                print(result[0])
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = Window()
    
        window.show()
        sys.exit(app.exec_())
    
  • 示例2:QInputDialog-功能作用
    from PyQt5.Qt import *
    import sys
    
    app = QApplication(sys.argv)
    window = QWidget()
    window.resize(500, 500)
    window.setWindowTitle('QInputDialog-功能作用')
    
    # 构造函数
    inputd1 = QInputDialog(window)
    inputd2 = QInputDialog(window)
    inputd3 = QInputDialog(window)
    inputd4 = QInputDialog(window)
    inputd5 = QInputDialog(window)
    
    
    # 选项设置
    # inputd.setOption(QInputDialog.NoButtons, True)
    
    # 设置输入模式
    inputd1.setInputMode(QInputDialog.TextInput)     # 单行文本模式
    inputd2.setInputMode(QInputDialog.IntInput)      # Int类型数据
    inputd3.setInputMode(QInputDialog.DoubleInput)   # Double类型数据
    inputd4.setComboBoxItems(['1','2','3'])          # 直接设置下拉选项使其成下拉选项对话框
    inputd5.setOption(QInputDialog.UseListViewForComboBoxItems)     # 通过选项设置,设置ComboBox显示为QListView模式
    inputd5.setComboBoxItems(['a','b','c'])
    
    # 设置标题
    inputd1.setWindowTitle('inputd1')
    inputd2.setWindowTitle('inputd2')
    inputd3.setWindowTitle('inputd3')
    inputd4.setWindowTitle('inputd4')
    inputd5.setWindowTitle('inputd5')
    
    # 界面文本设置
    inputd1.setLabelText('请输入内容')
    inputd1.setOkButtonText('疯子的确定')
    inputd1.setCancelButtonText('疯子的取消')
    
    inputd2.setLabelText('请输入一个Int数据')
    inputd2.setOkButtonText('疯子的OK')
    inputd2.setCancelButtonText('疯子的NO')
    
    inputd3.setLabelText('请输入一个Double数据')
    inputd3.setOkButtonText('疯子的确定')
    inputd3.setCancelButtonText('疯子的取消')
    
    # 值设置
    # 字符串对话框
    inputd1.setTextEchoMode(QLineEdit.Password)     # 设置显示模式(明文/密文/编辑明文显示密文)
    inputd1.setTextValue("默认显示文本")              # 设置默认显示内容
    
    # 整型对话框
    inputd2.setIntMaximum(100)                      # 设置最大值
    inputd2.setIntMinimum(10)                       # 设置最小值
    inputd2.setIntRange(20, 80)                     # 设置取值范围
    inputd2.setIntStep(5)                           # 设置步长
    inputd2.setIntValue(33)                         # 设置默认显示值
    
    # 浮点类型对话框
    inputd3.setDoubleMaximum(100.88)                 # 设置最大值
    inputd3.setDoubleMinimum(10.99)                  # 设置最小值
    inputd3.setDoubleRange(20.99, 80.88)             # 设置取值范围
    inputd3.setDoubleStep(0.01)                      # 设置步长
    inputd3.setDoubleValue(33.33)                    # 设置默认显示值
    inputd3.setDoubleDecimals(3)                     # 设置保留小数位
    
    # 下拉选项对话框
    inputd4.setComboBoxItems(['88','99','77','66'])     # 设置下拉选项
    inputd4.setComboBoxEditable(True)                   # 设置下拉框是否可以被编辑
    
    # 显示对话框:show()/open()/exec()
    inputd1.show()
    inputd2.show()
    inputd3.show()
    inputd4.show()
    inputd5.show()
    
    
    window.show()
    sys.exit(app.exec_())
    
  • 示例3:QInputDialog-可用信号
    from PyQt5.Qt import *
    import sys
    
    class Windows(QWidget):
        def __init__(self):
            super().__init__()
            self.setWindowTitle('QInputDialog-可用信号')
            self.resize(500, 500)
            self.widget_list()
    
        def widget_list(self):
            self.add_widget()
    
    
        def add_widget(self):
            input1 = QInputDialog(self)
            input2 = QInputDialog(self)
            input3 = QInputDialog(self)
    
            input1.setInputMode(QInputDialog.TextInput)
            input2.setInputMode(QInputDialog.IntInput)
            input3.setInputMode(QInputDialog.DoubleInput)
    
            btn1 = QPushButton('文本对话框', self)
            btn2 = QPushButton('整型对话框', self)
            btn3 = QPushButton('浮点对话框', self)
            btn1.move(10, 50)
            btn2.move(110, 50)
            btn3.move(210, 50)
    
            btn1.clicked.connect(lambda :input1.show())
            btn2.clicked.connect(lambda :input2.show())
            btn3.clicked.connect(lambda :input3.show())
    
            input1.textValueChanged.connect(lambda val: print('字符串文本发生了改变', val))
            input1.textValueSelected.connect(lambda val: print('字符串文本被选中了', val))
    
            input2.intValueChanged.connect(lambda val: print('整型数据发生了改变', val))
            input2.intValueSelected.connect(lambda val: print('整型数据被选中了', val))
    
            input3.doubleValueChanged.connect(lambda val: print('浮点数据发生了改变', val))
            input3.doubleValueSelected.connect(lambda val: print('浮点数据被选中了', val))
    
    
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        window = Windows()
    
        window.show()
        sys.exit(app.exec_())

     

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

失心疯_2023

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

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

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

打赏作者

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

抵扣说明:

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

余额充值