我正在尝试动态调整tk窗口的内容。
所以我想2秒后tk窗口应显示长文本。 但我得到的是,2秒后窗口在X轴上变得足够大,但在Y轴上只有一点点大。我只看到字母'a'而不是全文。
我尝试使用扩展和填充,但窗口大小不会改变。 有人可以指出为什么窗口大小不会适应标签大小? 我正在使用tk 8.6.6
在Kubuntu 17.0.4上运行Python 3.5.3
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()
答案 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秒后):
现在让我们用更长的文字进行测试:
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秒后输出:
答案 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()