程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了根据 Tkinter 中窗口的大小,如何不截断长文本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决根据 Tkinter 中窗口的大小,如何不截断长文本?

开发过程中遇到根据 Tkinter 中窗口的大小,如何不截断长文本的问题如何解决?下面主要结合日常开发的经验,给出你关于根据 Tkinter 中窗口的大小,如何不截断长文本的解决方法建议,希望对你解决根据 Tkinter 中窗口的大小,如何不截断长文本有所启发或帮助;

你的小部件(在我的例子中是这个标签)有太长的文本时,你怎么能让它不被截断,这取决于根窗口(主窗口)的大小?我知道如果文本变长,您可以使用 wraplength= 属性来包装文本,尽管这仅在您事先知道窗口的长度时才有效。那么,如果用户调整窗口大小,您会怎么做,我知道如果窗口大小发生变化,如何动态更改小部件大小,但不知道该小部件内的文本。

不使用 wraplength= 截断文本的示例。

根据 Tkinter 中窗口的大小,如何不截断长文本

如果窗口被调整大小,使用 wraplength=400 的文本不适合窗口的示例。

根据 Tkinter 中窗口的大小,如何不截断长文本

从图片中可以看出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()

截图:

根据 Tkinter 中窗口的大小,如何不截断长文本

根据 Tkinter 中窗口的大小,如何不截断长文本

另一种选择是使用 Text 小部件而不是 Label。也许,您必须将其状态设置为 disabled,并更改一些其他属性(例如 BACkgroundborderwidth):

Text(root,state="disabled",...)

大佬总结

以上是大佬教程为你收集整理的根据 Tkinter 中窗口的大小,如何不截断长文本全部内容,希望文章能够帮你解决根据 Tkinter 中窗口的大小,如何不截断长文本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。