热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python中fontsize_在PyQ中同步标签fontsize和布局

这包含在resizeEvent方法的重新实现中,QLabel的字体大小根据其contentRect的大小进行更新。注意,Qlabel的sizePolic

这包含在resizeEvent方法的重新实现中,QLabel的字体大小根据其contentRect的大小进行更新。注意,Qlabel的sizePolicy必须设置为Ignored,这样才能正常工作。在import sys

from PyQt4 import QtGui

class myQLabel(QtGui.QLabel):

def __init__(self, *args, **kargs):

super(myQLabel, self).__init__(*args, **kargs)

self.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored,

QtGui.QSizePolicy.Ignored))

self.setMinSize(14)

def setMinSize(self, minfs):

f = self.font()

f.setPixelSize(minfs)

br = QtGui.QFontMetrics(f).boundingRect(self.text())

self.setMinimumSize(br.width(), br.height())

def resizeEvent(self, event):

super(myQLabel, self).resizeEvent(event)

if not self.text():

return

# - fetch current parameters

f = self.font()

cr = self.contentsRect()

# - find the font size that fits the contentsRect -

fs = 1

while True:

f.setPixelSize(fs)

br = QtGui.QFontMetrics(f).boundingRect(self.text())

if br.height() <&#61; cr.height() and br.width() <&#61; cr.width():

fs &#43;&#61; 1

else:

f.setPixelSize(max(fs - 1, 1)) # backtrack

break

# - update font size -

self.setFont(f)

class myApplication(QtGui.QWidget):

def __init__(self, parent&#61;None):

super(myApplication, self).__init__(parent)

# Prepare a Layout

grid &#61; QtGui.QGridLayout()

for i in range(3):

grid.addWidget(myQLabel(&#39;some text&#39;), i, 0)

grid.setRowStretch(i, i&#43;1)

grid.setRowMinimumHeight(i, 25)

self.setLayout(grid)

self.resize(500, 300)

if __name__ &#61;&#61; &#39;__main__&#39;:

app &#61; QtGui.QApplication(sys.argv)

instance &#61; myApplication()

instance.show()

sys.exit(app.exec_())

结果是&#xff1a;

更新-resizeEvent优化&#xff1a;

下面是resizeEvent方法的优化版本&#xff0c;它应该可以产生更好的性能。它大大减少了寻找字体大小的最佳值所需的迭代次数。不过&#xff0c;我还没有做过广泛的测试。在

^{pr2}$



推荐阅读
  • 高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ... [详细]
  • 开发笔记:python协程的理解
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python协程的理解相关的知识,希望对你有一定的参考价值。一、介绍什么是并发?并发的本质就是 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文介绍如何在阿里云环境中利用 Docker 容器化技术部署一个简单的 Flask Web 应用,并确保其可通过互联网访问。内容涵盖 Python 代码编写、Dockerfile 配置、镜像构建及容器运行等步骤。 ... [详细]
  • 在 Ubuntu 系统中安装 Python pip 时遇到错误的解决方案 ... [详细]
  • 在深入研究 React 项目的过程中,特别是在探索 react-router 源码时,我发现了其中蕴含的中间件概念。这激发了我对中间件的进一步思考与整理。本文将详细探讨 Redux 中间件的原理及其在实际项目中的应用,帮助读者更好地理解和使用这一强大工具。通过具体示例和代码解析,我们将揭示中间件如何提升应用的状态管理和异步操作处理能力。 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 在Python 2.7环境中使用PyCharm进行Cvxopt的安装及线性规划问题求解。具体步骤包括:通过PyCharm的文件菜单进入项目设置,选择解释器选项,点击右侧的“+”按钮,在可用包列表中搜索并安装Cvxopt。安装完成后,可以通过导入Cvxopt库并调用其函数来解决线性规划问题,提高模型的准确性和效率。 ... [详细]
  • 在Python中,可以通过导入 `this` 模块来优雅地展示“Python之禅”这一编程哲学。该模块会将这些指导原则以一种美观的方式输出到控制台。为了增加趣味性,可以考虑在代码中对输出内容进行简单的加密或混淆处理,以提升用户体验。 ... [详细]
  • 在Python编程中,当遇到程序运行无响应的问题时,通常与计算资源的消耗有关。Python使用任意精度整数进行计算,这意味着在处理大数值运算时,如计算大指数值,系统可能会因为内存或CPU资源不足而变得缓慢,甚至没有反馈。此外,代码中的无限循环或递归调用也可能导致类似问题。建议检查代码逻辑,优化算法效率,并确保计算任务不会超出系统的处理能力。 ... [详细]
  • 基于PythonOCC库,本文探讨了如何实现对曲线边(TopoDS_Edge)进行等间距周长分割的分析方法及其应用。通过使用BRepGProp模块中的线性属性计算功能,我们能够精确地将曲线分割成多个等长段,从而为后续的几何建模和工程应用提供基础支持。该方法不仅提高了曲线处理的效率,还增强了模型的准确性和可靠性。 ... [详细]
  • 提升Python多环境管理效率:深入探索多Python Pip应用策略
    提升Python多环境管理效率:深入探索多Python Pip应用策略 ... [详细]
  • Pyhotn3基础笔记(上卷)吉多范罗苏姆(GuidovanRossum)一.解释器Python的解释器如今有多个语言的实现,包括&#x ... [详细]
  • 为什么python是动态类型语言_Python 3.7.0 面向对象的动态类型语言
    代表Python开发社区和Python3.7发布团队,我们很高兴地宣布https:www.python.orgdownloadsreleasepython-370 ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
author-avatar
一个具有骨感的女人0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有