python – TkInter标签按文本长度更改字体大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – TkInter标签按文本长度更改字体大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1952字,纯文字阅读大概需要3分钟。
内容图文
![python – TkInter标签按文本长度更改字体大小](/upload/InfoBanner/zyjiaocheng/703/0c563be09df64d0b933eeb78c7278a7c.jpg)
早上好,
我有一个固定宽度的Tkinter标签.在这个标签中,我设置了一个动态文本.当文本宽度超过标签宽度时,我需要更改字体大小(减少或增加).
这是一个例子:
解决方法:
为此,您需要为标签指定一个唯一的字体,然后使用该字体的measure方法计算该字体中给定字符串所需的空间大小.然后你只需要保持增加或减少字体大小,直到它适合标签.
使用自定义字体创建标签的简单方法如下所示(对于python 2.x;对于3.x,导入将略有不同):
import Tkinter as tk
import tkFont
label = tk.Label(...)
original_font = tkFont.nametofont(label.cget("font"))
custom_font = tkFont.Font()
custom_font.configure(**original_font.configure())
label.configure(font=custom_font)
现在,您可以使用custom_font.measure(…)来确定当前字体大小的标签所需的像素数.如果像素数太大,请更改字体大小并再次测量.重复,直到字体足够大以容纳文本.
更改字体大小时,标签将自动重新绘制新字体大小的文本.
这是一个完整的工作示例,说明了该技术:
import Tkinter as tk
import tkFont
class DynamicLabel(tk.Label):
def __init__(self, *args, **kwargs):
tk.Label.__init__(self, *args, **kwargs)
# clone the font, so we can dynamically change
# it to fit the label width
font = self.cget("font")
base_font = tkFont.nametofont(self.cget("font"))
self.font = tkFont.Font()
self.font.configure(**base_font.configure())
self.configure(font=self.font)
self.bind("<Configure>", self._on_configure)
def _on_configure(self, event):
text = self.cget("text")
# first, grow the font until the text is too big,
size = self.font.actual("size")
while size < event.width:
size += 1
self.font.configure(size=size)
# ... then shrink it until it fits
while size > 1 and self.font.measure(text) > event.width:
size -= 1
self.font.configure(size=size)
class Example(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
self.label = DynamicLabel(self, text="Resize the window to see the font change", width=20)
self.label.pack(fill="both", expand=True, padx=20, pady=20)
parent.geometry("300x200")
if __name__ == "__main__":
root = tk.Tk()
Example(root).pack(fill="both", expand=True)
root.mainloop()
内容总结
以上是互联网集市为您收集整理的python – TkInter标签按文本长度更改字体大小全部内容,希望文章能够帮你解决python – TkInter标签按文本长度更改字体大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。