PyQt 自动调整 qlineedit 字符间距

2024-04-24

我有一个 qlineedit,用户在其中输入验证码。我希望能够每隔 5 个字符自动间隔这些数字,就像激活自动添加破折号的窗口时一样。 例如

12345 67890 12345 67890

如果位数是固定的,最好的选择是使用setInputMask() http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html#setInputMask,在你的情况下:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    le = QLineEdit()
    le.setInputMask(("ddddd "*4)[:-1])
    le.show()
    sys.exit(app.exec_())

如果行数可变,最好使用textChanged http://pyqt.sourceforge.net/Docs/PyQt4/qlineedit.html#textChanged信号并在必要时添加它,此外,我们还可以编写建立一个 QValidator,如下所示。

class LineEdit(QLineEdit):
    def  __init__(self, *args, **kwargs):
        QLineEdit.__init__(self, *args, **kwargs)
        self.textChanged.connect(self.onTextChanged)
        self.setValidator(QRegExpValidator(QRegExp("(\\d+)")))

    def onTextChanged(self, text):
        if len(text) % 6 == 5:
            self.setText(self.text()+" ")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    le = LineEdit()
    le.show()
    sys.exit(app.exec_())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyQt 自动调整 qlineedit 字符间距 的相关文章

随机推荐

  • 在 mvc3 中公开实体或 DTO 以查看的最佳实践是什么?

    我创建了自己定制的大量架构 包括针对不同技术的 n 层 目前正在使用 asp net mvc 框架进行 n 层架构 问题是我在数据访问层有实体框架 由于实体将拥有所有关系元数据和导航属性 因此它变得更重 我觉得直接通过 mvc 视图公开这些
  • 在俄罗斯方块项目中添加其他形状。循环逻辑辅助

    我正在创建一个俄罗斯方块克隆作为个人项目 以帮助我更好地绘制图像 移动图像以及学习碰撞检测 一切都很顺利 但我对让程序在第一个停止移动时向框架添加新的方块形状背后的逻辑感到困惑 到目前为止 我使用随机数生成器随机创建四边形 并将其添加到框架
  • Owin Context 每个请求使用单个实例

    app CreatePerOwinContext DataContext Create 我有上面的行来创建一个数据上下文 当我启动一个新的 MVC 5 项目时 该代码随项目一起提供 同时 我使用 autofac 在我的依赖注册器中为每个请求
  • Dia:图表编辑器:盒子对象的限制?

    如标题所示 我尝试为 hte 3d 图形引擎 ogre3d 开发尽可能少的方案 问题是大图方案 Ogre Root 类需要相当多的从它下降的箭头 用关系箭头连接框的模型是它们只能通过边界周围的特定点 称为 关节 或其他东西 进入 退出 但现
  • 使用像 FILE* 这样的 C 字符串

    我有一个 C 函数 可以从 a 中读取字符流FILE 我怎样才能创建一个FILE 在这种情况下从字符串中 Edit 我认为我原来的帖子可能具有误导性 我想创建一个FILE 来自文字字符串值 因此结果FILE 会表现得好像某处确实有一个包含该
  • 可以在 JavaScript 中强制打印机设置(纸张尺寸)吗?

    我需要将网络应用程序中的页面打印到 8 x 4 索引卡上 IE 不会将打印设置从一份打印保存到下一份打印 那么有没有办法以编程方式强制打印设置 看看这个 CSS3 示例http www w3 org TR css3 page size ht
  • java.lang.IllegalArgumentException:找不到 id 0x7f0c007b 的视图

    我尝试启动一个应用程序项目 现在出现以下错误 我从旁边找到的答案中尝试了很多 但没有发现我的错误 这是输出 E AndroidRuntime FATAL EXCEPTION main Process de christian heinisc
  • Meteor.WrapAsync 不返回值

    我一直在努力工作Meteor WrapAsync我读过了Meteor wrapAsync 语法 https stackoverflow com questions 26058205 meteor wrapasync syntax回答这个视频
  • 如何保护自己免受内存消耗失控导致电脑崩溃的情况?

    我时不时地发现自己做了一些相当愚蠢的事情 导致我的程序分配它可以获得的所有内存 然后分配一些内存 过去 这种情况会导致程序因 内存不足 错误而很快死掉 但现在 Windows 会不遗余力地将这些不存在的内存提供给应用程序 而且实际上显然已经
  • 如何查看JVM中JIT编译的代码?

    有什么方法可以查看 JVM 中 JIT 生成的本机代码吗 一般用法 正如其他答案所解释的 您可以使用以下 JVM 选项运行 XX UnlockDiagnosticVMOptions XX PrintAssembly 根据特定方法进行过滤 您
  • 反应 for 循环

    我正在学习 JavaScript React 我正在尝试为 React 网站上的 tic tac toe 示例创建一个简单的 for 循环 但到目前为止它还存在问题 奇怪的是 有几个映射示例 但没有 for 循环示例 无论如何 对于以下内容
  • 通用 .NET 类中的 public static (const)

    是否有语法技巧可以在不指定 临时 类型的情况下获取泛型类中的常量 public class MyClass
  • 如何在WPF中启动其他程序,例如Windows窗体process.start

    我在 Windows 窗体中使用 process start 来启动其他程序 但现在我想使用 wpf 来启动它 但我不知道如何以及与它等效的是什么
  • Paypal:客户端身份验证失败

    尝试让我的 paypal REST api 网站上线 它在沙箱模式下运行良好 并具有经过验证的传输 当我将沙箱切换为实时客户端 ID 和密钥时 出现错误 error invalid client error description Clie
  • Azure Functions不生成extensions.json

    我有一个具有多种功能的 Azure Functions 项目 由服务总线和 Blob 存储触发 他们已经构建并部署到 azure Fine 几个月了 某物最近发生了这样的事情 当您单击该函数时 它们不再从我的构建计算机进行部署 并在 Azu
  • FBSDKLog:在 Facebook SDK 初始化之前无法启动 FBSDKGraphRequestConnection

    我只是在我的 iOS 应用程序中使用 FBSDKCoreKit 8 1 0 最新 使用 Facebook Analytics 此错误消息不断淹没我的日志 FBSDKLog FBSDKGraphRequestConnection cannot
  • Django 模板上的 Unicode 字符串显示

    我正在使用 django v1 5 我将渲染一个名为 foobar 的变量 它是一个 json obj 包含 unicode 字符串 def home request import json foo name u 赞我们一下 bar jso
  • awk 中的并行处理?

    awk 逐行处理文件 假设每行操作不依赖于其他行 有没有办法让 awk 一次并行处理多行 是否有其他文本处理工具可以自动利用并行性并更快地处理数据 唯一尝试提供 awk 并行实现的 awk 实现是并行 awk http code googl
  • Python 在计算机睡眠/休眠后冻结

    我有一个使用 pythonw 在后台运行的 python 脚本 如果我关闭笔记本电脑 它就会进入睡眠模式 当我打开笔记本电脑时 我的程序几乎没有任何功能 并在几秒钟后冻结 有什么方法可以让我的脚本知道我的计算机是否进入睡眠模式 以便它可以处
  • PyQt 自动调整 qlineedit 字符间距

    我有一个 qlineedit 用户在其中输入验证码 我希望能够每隔 5 个字符自动间隔这些数字 就像激活自动添加破折号的窗口时一样 例如 12345 67890 12345 67890 如果位数是固定的 最好的选择是使用setInputMa