Tkinter消息包装为文本不明原因。

问题描述 投票:0回答:1

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但日期还是没有。欢迎任何帮助。

python tkinter
1个回答
0
投票

这里是如何你可以看到缺少什么:改变消息框的背景颜色为其他颜色。你会立即看到,它的宽度太小。试试。

desc.configure(bg='#FF0000')

然后..:

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

结果是:

enter image description here


0
投票

按照建议,我把信息框的 Message'的宽度,它解决了这个问题。让我困惑的是,我以为已经用行来设置了。desc.place(x=0, y=0, height=0, width=300)但显然不是。至少没有覆盖到 aspect 比。

Tl;dr: 添加 desc.configure(width=300) 在最后解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.