在网格中组织的标签小部件上使用包装长度的问题

2024-05-02 05:56:27 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我有两行专用于消息标签小部件,以便在用户使用tkinter GUI时向用户显示任何成功/不成功的消息。 有些消息太长,无法容纳列宽,因此我使用Label小部件的wraplength特性将文本换行到下一行。在

我遇到的问题是,由于这个特性,它会将小部件的位置移到这个小部件下面,每换行一行它就把文本换行。在

所以我想知道有没有什么方法可以让文本自动换行,而不移动下面的小部件。在

消息标签在高度为1的GUI中的外观: enter image description here

将文本换行为高度为1的换行符时,邮件标签的外观:

enter image description here

消息标签在高度为2的GUI中的外观: enter image description here

将文本换行为高度为1的换行符时,邮件标签的外观: enter image description here

我想在第二个图像链接的消息标签显示方式,但保持垂直布局的窗口小部件,如看到在第一图像链接。在

以下代码用于定义小部件:

Choice_list = Listbox(window, selectmode=SINGLE, width = 17, height = 9,
                justify = CENTER)

image = PhotoImage(file = 'Dummy_Logo.gif')
Image_label = Label(window, image = image)

extract = Button(window, text = "Archive News from Webpage",
             command = func1, width = 20)
archive = Button(window, text = "Extract News from Archive",
             command = func2, width = 22)
display = Button(window, text = "Display the News",
             command = func3, width = 14)

Message_Widget = Label(window, text = '', fg = 'black', justify = CENTER,
                   height = 2, wraplength = 300)

Log_Event = Checkbutton(window, text = 'Log Event', variable = logState,
              command = logEvent)

以下代码是小部件的网格对齐方式:

^{pr2}$

Tags: textimage文本消息高度部件guibutton
3条回答

你有没有考虑过使用文本小部件来读取数据?在

例如,如果文本太长,下面的代码将包装文本,并且不会调整小部件的大小。这只是一个例子,但应该足以帮助你解决问题。在

from tkinter import *
import random

root = Tk()

text1 = Text(root, height=1, width=40, wrap="word")
text1.grid(row=0, column=0, sticky="ew")

def update_lbl1():
    x = ["Click and drag to see some much longer random text for updating label!!!","some short data"]
    text1.delete("1.0", "end")
    text1.insert("1.0", random.choice(x))

Button(root, text="Change label from list", command = update_lbl1).grid(row=1, column=0)

root.mainloop()

把标签的高度定为2或3。问题很简单,默认情况下它想要一个字符高。Tkinter将只分配一个字符的高度时,布局所有的小部件。当文本换行时,标签必须变得更高,这样文本才会适合。在

通过给它一个2或3的高度开始,额外的空间被内置到GUI中。当文本换行时,标签不必增长以适应新文本。在

这可能不是解决这个问题的适当方法,但是我只通过将Message_小部件中的rowspan参数调整为rowspan=11,就成功地得到了我想要的结果。在

Message_Widget.grid(row = 2, column = 1, rowspan = 11)

结果如下:

用简短的文字: https://i.stack.imgur.com/XpGLq.png

长文本: https://i.stack.imgur.com/iXwlR.png

相关问题 更多 >