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