tkinter成长框架以适应内容

时间:2017-11-05 23:03:46

标签: python python-3.x tkinter kde

我正在尝试动态调整tk窗口的内容。

所以我想2秒后tk窗口应显示长文本。 但我得到的是,2秒后窗口在X轴上变得足够大,但在Y轴上只有一点点大。我只看到字母'a'而不是全文。

我尝试使用扩展和填充,但窗口大小不会改变。 有人可以指出为什么窗口大小不会适应标签大小? 我正在使用tk 8.6.6

在Kubuntu 17.0.4上运行Python 3.5.3

before after

import tkinter as tk

def doIt():
    label.configure(text="text\na\n\n\n This is very long")

root = tk.Tk()
label=tk.Label(root,text="before")
label.pack()
root.after(2000,doIt)
root.mainloop()

2 个答案:

答案 0 :(得分:0)

  

我尝试了扩展和填充,但窗口大小   不要改变。

我不知道你是怎么做到的,但是将这两个选项设置为正确的值会得到你期望的结果:

from fractions import Fraction
from math import log10

def maxnum(x):
    return ''.join(str(n) for n in sorted(x, reverse=True,
                          key=lambda i: Fraction(i, 10**(int(log10(i))+1)-1)))

for numbers in [(1, 34, 3, 98, 9, 76, 45, 4), (54, 546, 548, 60)]:
    print('Numbers: %r\n  Largest integer: %15s' % (numbers, maxnum(numbers)))

输出(2秒后):

enter image description here

现在让我们用更长的文字进行测试:

import tkinter as tk

def doIt():
    label.configure(text="text\na\n\n\n This is very long")

root = tk.Tk()
label=tk.Label(root,text="before")
label.pack(fill=tk.BOTH, expand=True) # I changed this
root.after(2000,doIt)
root.mainloop()

2秒后输出:

enter image description here

答案 1 :(得分:0)

这已被证实是Kubuntu环境中的问题/不一致。我创造了一个 tk ticketystem上的bugreport。 作为一种解决方法,您可以使用以下代码(Ethan很接近):

import tkinter as tk

def doIt():
    label.configure(text="text\na\n\n\n This is very long")

root = tk.Tk()
root.update() # This is the workaround
label=tk.Label(root,text="before")
label.pack()
root.after(2000,doIt)
root.mainloop()