示例代码
代码语言:python
代码运行次数:0
复制from __future__ import annotations
import sys
from datetime import datetime
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QInputDialog, QLineEdit, QMainWindow, QPushButton, QVBoxLayout, QWidget
def get_time_str() -> str:
return datetime.now().isoformat(sep = ' ')
class MyMainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Hello, Input Dialog!')
self.setToolTip('A PySide6 Input Dialog Application Demo')
self.int_button = QPushButton('输入整数', self)
self.int_button.clicked.connect(self.int_dialog_show)
self.double_button = QPushButton('输入浮点数', self)
self.double_button.clicked.connect(self.double_dialog_show)
self.items_button = QPushButton('选择选项', self)
self.items_button.clicked.connect(self.items_dialog_show)
self.str_button = QPushButton('输入字符串', self)
self.str_button.clicked.connect(self.str_dialog_show)
self.multi_str_button = QPushButton('输入多行字符串', self)
self.multi_str_button.clicked.connect(self.multi_str_dialog_show)
v_layout = QVBoxLayout()
v_layout.addWidget(self.int_button)
v_layout.addWidget(self.double_button)
v_layout.addWidget(self.items_button)
v_layout.addWidget(self.str_button)
v_layout.addWidget(self.multi_str_button)
container = QWidget()
container.setLayout(v_layout)
self.setCentralWidget(container)
def int_dialog_show(self):
results = QInputDialog(self).getInt(self, '输入整数', '请输入:', 1, -1, 100, 1)
print('输入整数的结果:', results, get_time_str())
def double_dialog_show(self):
results = QInputDialog(self).getDouble(self, '输入浮点数', '请输入:', 1.0, -1.0, 100.0, 3, step = 0.003)
print('输入浮点数的结果:', results, get_time_str())
def items_dialog_show(self):
"""
Qt.InputMethodHint 是 Qt 框架中用于控制部件与输入法交互行为的枚举类型
它提供了一系列的选项,用于向输入法提供关于期望的文本输入行为的提示:
ImhNone: 不配置,使用系统默认的输入法行为
ImhHiddenText: 输入的文本应被隐藏,适用于密码输入等场景
ImhSensitiveData: 类似于 ImhHiddenText,用于敏感数据输入
ImhNoAutoUppercase: 输入时不自动转换为大写字母
ImhPreferNumbers: 偏好输入数字,适用于需要输入数字的字段
ImhPreferUppercase: 偏好输入大写字母
ImhPreferLowercase: 偏好输入小写字母
ImhNoPredictiveText: 禁用预测性文本输入
ImhDate: 适用于输入日期的字段
ImhTime: 适用于输入时间的字段
ImhPreferLatin: 偏好输入拉丁字符
ImhMultiLine: 适用于多行文本输入
ImhDigitsOnly: 仅允许输入数字
ImhFormattedNumbersOnly: 允许输入格式化的数字
ImhUppercaseOnly: 仅允许输入大写字母
ImhLowercaseOnly: 仅允许输入小写字母
ImhDialableCharacterOnly: 仅允许输入可拨号字符,如电话号码
ImhEmailCharactersOnly: 允许输入电子邮件地址相关的字符
ImhUrlCharactersOnly: 允许输入 URL 相关的字符
ImhLatinOnly: 仅允许输入拉丁字符
ImhExclusiveInputMask: 一个特殊的标志,用于指定一个独占的输入掩码,它将同时选中多个特定的标志
inputMethodHints 属性只是一个提示,并不是所有输入法都会支持或遵守这些提示
"""
results = QInputDialog(self).getItem(self, '选择选项', '请选择:',
['纯汉字', 'Option2', 'Choice3', '1234', 'abc', 'ABC', 'A1B2C3'],
2, False,
inputMethodHints = Qt.InputMethodHint.ImhDigitsOnly)
print('输入选项的结果:', results, get_time_str())
def str_dialog_show(self):
"""
QLineEdit.Normal: 这是默认模式,用户输入的文本将正常显示。
QLineEdit.NoEcho: 在这种模式下,用户输入的文本不会显示任何字符,通常用于密码字段以隐藏输入内容。
QLineEdit.Password: 这种模式与 NoEcho 类似,但会用占位符(通常是点或星号)替换实际的输入字符,以便用户知道他们正在输入文本,但文本内容被隐藏。
QLineEdit.PasswordEchoOnEdit: 当设置为这种模式时,用户输入的文本最初是隐藏的,但一旦用户开始编辑(例如,通过光标定位或使用退格键),文本就会变为可见。
"""
results = QInputDialog(self).getText(self, '输入字符串', '请输入:', echo = QLineEdit.EchoMode.Password,
text = '1234567890')
print('输入字符串的结果:', results, get_time_str())
def multi_str_dialog_show(self):
results = QInputDialog(self).getMultiLineText(self, '输入多行字符串', '请输入:',
'1234567890nabcnde',
inputMethodHints = Qt.InputMethodHint.ImhMultiLine)
print('输入多行字符串的结果:', results, get_time_str())
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MyMainWindow()
window.show()
app.exec()
运行效果
静态效果
输入整数
输入浮点数
列表选择
输入字符串
输入多行文本