前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PySide6 GUI 编程(26):QInputDialog的简单使用

PySide6 GUI 编程(26):QInputDialog的简单使用

原创
作者头像
bowenerchen
发布2024-08-19 23:17:10
1731
发布2024-08-19 23:17:10
举报
文章被收录于专栏:编码视界

示例代码

代码语言: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, '输入多行字符串', '请输入:',
                                                      '1234567890\nabc\nde',
                                                      inputMethodHints = Qt.InputMethodHint.ImhMultiLine)
        print('输入多行字符串的结果:', results, get_time_str())


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyMainWindow()
    window.show()
    app.exec()

运行效果

静态效果

静态界面效果
静态界面效果

输入整数

输入整数演示效果
输入整数演示效果

输入浮点数

输入浮点数
输入浮点数

列表选择

列表选择
列表选择

输入字符串

输入单行文本
输入单行文本

输入多行文本

输入多行文本
输入多行文本

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 示例代码
  • 运行效果
    • 静态效果
      • 输入整数
        • 输入浮点数
          • 列表选择
            • 输入字符串
              • 输入多行文本
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档