Tkinter消息包装,原因未知

2024-09-30 14:21:01 发布

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

The way it should beThe way it is

我遇到了Tkinter的Message小部件的奇怪行为。它以前工作得很好,但现在它正在包装(日期和时间在左边的图像上,只有日期在右边的图像上),而不应该。我注意到时间被包装了几秒钟,而其他的没有,因为不是所有的字符都是相同的长度

请注意,图像是被裁剪的,但小部件实际上会继续使用大约200多个像素。我没有设置wraplength(奇怪的是,它甚至没有被识别为一个选项,即使它在文档中),所以它仍然是默认的0(没有包装)。我已经玩过很多次了,但是我想不出来

文本由字典生成,大致如下:

import tkinter as tk

root = tk.Tk()
root.geometry('500x500+0+0')
root.configure(bg='white')

desc = tk.Message(root)
desc.configure(bg='white')
desc.pack()

description={}
description['Date'] = '11 June 2020'
description['Time'] = '21:26:26'
description['Duration'] = 0
description['Overlay'] = str(False)

descToLines = [f'{key}:\t {val}' for key, val in description.items()]
linesToString = '\n'.join(descToLines)

desc.configure(text=linesToString)
root.mainloop()

事实上,在验证此最小代码时,时间线21:26:38现在与Time内联,但日期仍然不是。欢迎任何帮助


Tags: key图像messagetime部件configure时间val
2条回答

根据建议,我手动设置了Message的宽度,解决了这个问题。让我困惑的是,我认为它已经使用以下行设置: desc.place(x=0, y=0, height=0, width=300),但显然不是。至少不至于覆盖aspect比率

Tl;dr:在末尾添加desc.configure(width=300)可以解决问题

下面是您如何看到缺少的内容:将消息框的背景颜色更改为另一种颜色。您将立即看到它的宽度太小。尝试:

desc.configure(bg='#FF0000')

然后:

desc.configure(bg='#00FF00', width=200)

其中:

enter image description here

相关问题 更多 >