大佬教程收集整理的这篇文章主要介绍了根据 Tkinter 中窗口的大小,如何不截断长文本,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当你的小部件(在我的例子中是这个标签)有太长的文本时,你怎么能让它不被截断,这取决于根窗口(主窗口)的大小?我知道如果文本变长,您可以使用 wraplength=
属性来包装文本,尽管这仅在您事先知道窗口的长度时才有效。那么,如果用户调整窗口大小,您会怎么做,我知道如果窗口大小发生变化,如何动态更改小部件大小,但不知道该小部件内的文本。
不使用 wraplength=
截断文本的示例。
如果窗口被调整大小,使用 wraplength=400
的文本不适合窗口的示例。
从图片中可以看出,wraplength=
并不总是有效。此外,如果要使窗口比 wraplength=
小,那么我们会遇到文本被截断的相同问题。那么,他们是否可以根据用户的窗口宽度动态更改文本的换行长度?
您必须将 wraplength
值设置为标签的宽度(您可以使用 .winfo_width()
方法来获取它。您还需要在每次窗口打开时更新 wraplength
正在调整大小("<Configure>"
事件)。
所以,你应该做这样的事情(有点简化版):
import tkinter as tk
def enter():
label.configure(text=entry.get())
def copy_to_clipboard():
root.clipboard_append(entry.get())
def update_wraplength(_event):
label.configure(wraplength=label.winfo_width())
root = tk.Tk()
frame1 = tk.Frame(root)
entry = tk.Entry(frame1)
entry.pack(side="left",fill="x",expand=TruE)
tk.button(frame1,text="Enter",command=enter)\
.pack(side="left")
frame1.pack(fill="x")
frame2 = tk.Frame(root)
label = tk.Label(frame2)
label.pack(side="left",expand=TruE)
tk.button(frame2,text="Copy to Clipoard",command=copy_to_clipboard)\
.pack(side="left")
frame2.pack(fill="x")
root.bind("<Configure>",update_wraplength)
root.mainloop()
截图:
另一种选择是使用 Text
小部件而不是 Label
。也许,您必须将其状态设置为 disabled
,并更改一些其他属性(例如 BACkground
或 borderwidth
):
Text(root,state="disabled",...)
以上是大佬教程为你收集整理的根据 Tkinter 中窗口的大小,如何不截断长文本全部内容,希望文章能够帮你解决根据 Tkinter 中窗口的大小,如何不截断长文本所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。