如何限制 QLineEdit 的文本框宽度最多显示四个字符?

2023-12-07

我正在使用基于 PySide 的 GUI。我制作了一个(一行)文本框QLineEdit输入的长度只有四个字符,我已经成功应用了这一限制。

问题是我的文本框比需要的宽(即文本后面有很多未使用的空间)。如何缩短文本框的长度?

我知道通过使用 Designer 设计文本框可以轻松解决这个问题;但是,这个特定的文本框不是在 Designer 中创建的。


看着source of QLineEdit.sizeHint()人们发现,行编辑通常足够宽,可以显示 17 个拉丁“x”字符。我尝试在 Python 中复制此内容并将其更改为显示 4 个字符,但由于 Qt 的 Python 绑定的限制,我无法正确获取行编辑的样式相关边距。

一个简单的:

e = QtGui.QLineEdit()
fm = e.fontMetrics()
m = e.textMargins()
c = e.contentsMargins()
w = 4*fm.width('x')+m.left()+m.right()+c.left()+c.right()

在我的例子中返回 24,但这不足以在 QLineEdit 中显示“abcd”等四个字符。更好的值约为 32,您可以这样设置。

e.setMaximumWidth(w+8) # mysterious additional factor required 

即使在许多系统上更改了字体,这可能仍然没问题。

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

如何限制 QLineEdit 的文本框宽度最多显示四个字符? 的相关文章

随机推荐

  • 从 Bat 文件执行 Java 时包含 Jar

    我想从 bat 文件执行 Java 类 它包括使用opencsv jar 下面是代码 echo off set path PATH C Program Files x86 Java jdk1 6 0 bin javac cp opencsv
  • 如何从更深的目录中的文件导入模块?

    假设我的项目结构如下 project important py files file1 py 文件 important py 包含重要类 如何从 file1 导入类 重要 而 file1 是正在执行的 python 文件 我找到的唯一解决方
  • 以编程方式将 iPhone 重置为出厂设置

    有没有一种方法可以让我们以编程方式将 iPhone 设置重置为出厂默认设置 我们在 设置 应用程序的 常规 部分中有一个 重置 选项 我们可以通过编程方式访问它吗 谢谢 苏德希尔 SDK 不支持此功能 也许你可以对越狱手机做一些事情 这显然
  • 如何在 Matlab 中隔离单元测试

    给定一个中等规模 科学 的代码库 如何继续构建单元测试套件 我需要测试本地函数以及隐藏方法 但到目前为止我不想修改 扩展类 这是可能的还是我需要以某种方式注入测试用例 我该如何最好地实施这个 Thanks PS 我知道单元测试通常是指测试整
  • QTableView,如何更改拖动多个项目的显示

    我有一个带有我自己实现的 QAbstractItemModel 的 QTableView 我可以在其中拖放多个项目 我的问题是 当拖动项目并尝试将它们放入目标单元格时 用户不太清楚结果是什么 例如 我有以下内容 但我更喜欢像默认窗口显示那样
  • 在 Boost Python 中公开一个非常量但不可复制的成员

    这是我的问题 我有两个这样的课程 class Signal public void connect sig connect private boost signal2 signal sig class MyClass public Sign
  • 在渲染期间/之后将调试跟踪添加到 Symfony 3.4 twig 模板

    我正在寻找一种无缝的方法来做到这一点 使用 Symfony 3 4 我需要一种方法 让渲染的页面知道 对于任何元素 文本 它来自哪个树枝模板 注意 我已经检查过Twig 如果启用调试模式则显示模板名称 但该线程是关于使用 Twig 而不是
  • C++ 预处理器与 C 预处理器相同吗?

    我想知道 C 和 C 的预处理器有何不同C are 提问的原因是这个问题关于特定于预处理器的问题 其中解决该问题的标准段落具有不同的措辞 以及不同的段落编号 并且关于true and falseC 中的关键字 那么 是否还有更多差异 或者这
  • 如何使用 Ember.js 和 Handlebars.js 渲染(Twitter Bootstrap)网格?

    我很难找到一种使用 Ember Handlebars 渲染以下标记的方法 div class row fluid div class span4 Item 1 row 1 column 1 div div class span4 Item
  • CMake target_include_directories:我使用 PUBLIC、PRIVATE 还是 INTERFACE?

    我有一个 CMake 库add library helpers helpers h 我想通过以下方式包含源文件target include directories 然后我必须在参数之间进行选择PRIVATE PUBLIC and INTER
  • 基于通过散点的类别的彩色 3D 表面

    我有以下格式的数据 X Y Z 类别 我使用plotly 生成散点图 然后使用以下代码通过散点拟合曲线 from scipy interpolate import griddata import numpy as np import mat
  • JavaScript 事件处理程序的分配方式如何影响其执行?

    请考虑以下代码
  • 跨域调用WCF服务

    我有一个 WCF 服务 这是我要调用的方法 OperationContract WebInvoke Method POST BodyStyle WebMessageBodyStyle Wrapped ResponseFormat WebMe
  • Selenium:从下拉列表中选择值,该值取决于另一个下拉列表中选择的值

    Selenium 我必须从下拉列表中选择值 该值取决于另一个下拉列表中选择的值 例如 我有两个下拉列表 1 和 2 要在 2 中填充的值取决于 1 当我在下拉列表 1 中选择值时 页面将刷新并填充 2 中的值 我必须在下拉菜单 2 中选择值
  • ServiceStack 与 ASP.Net Web API [关闭]

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 Closed 这个问题是基于意见的 目前不接受答案 我想编写一个新的 REST 风格 API 并且研究过 ServiceSta
  • 特殊字符和重音字符

    我正在为法国客户做一些工作 因此需要处理带重音的字符 但我遇到了很多困难 我希望解决方案很简单 并且有人可以向我指出 字符串 La For t pour T moin转换为 La For pour T oin 请注意重音字符后面缺少的字符
  • Wix 卸载快捷方式不起作用

    我正在尝试为我的应用程序创建卸载快捷方式 并且我正在使用此链接中的确切标记 http wixtoolset org documentation manual v3 howtos files and registry create unins
  • 是否可以让 vs2010 vsix 在本地检查更新?

    我正在工作中为 Visual Studio 编写项目结构和代码分析扩展 该项目无法发布到 Visual Studio 扩展库 有没有什么方法可以管理 Visual Studio 中内置的更新和部署 以便团队可以使用扩展并获取更新提示 不 这
  • getElementById().style.display 不起作用

    我做了一些js代码 div 出现或消失 src js openSearch gt var con document getElementById search bar if con style display none con style
  • 如何限制 QLineEdit 的文本框宽度最多显示四个字符?

    我正在使用基于 PySide 的 GUI 我制作了一个 一行 文本框QLineEdit输入的长度只有四个字符 我已经成功应用了这一限制 问题是我的文本框比需要的宽 即文本后面有很多未使用的空间 如何缩短文本框的长度 我知道通过使用 Desi