Python:检索ttk.Frame大小

Guy*_*. D 3 python tkinter

我想要获得Frame的大小 - 但没有运气.

在下面的代码中 - 我得到了两个答案,"0"(标有***的行)

from tkinter import *
from tkinter import ttk

root = Tk()
w = '400'
h = '100'
root.geometry('{}x{}'.format(w, h))
root.configure(bg='lightgreen')

txt = StringVar()
txt.set("Hello")


testframe = ttk.Frame(root)
testframe.grid(row=0, column=1 )

label1 = ttk.Label(testframe, textvariable=txt)
label1.grid(row=0, column=0)

print(testframe["width"], testframe.cget("width"))   ***This line

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

Rig*_*leg 5

update需要首先调用该方法,以便呈现窗口小部件.如果不是,则其宽度等于零.这个答案解释了这一点.

现在,问题testframe['width']在于它只是对小部件实际宽度的暗示,如本答案中所述.

32正如预期的那样,以下代码将输出.

from tkinter import *
from tkinter import ttk

root = Tk()
w = '400'
h = '100'
root.geometry('{}x{}'.format(w, h))
root.configure(bg='lightgreen')

txt = StringVar()
txt.set("Hello")


testframe = ttk.Frame(root)
testframe.grid(row=0, column=1 )

label1 = ttk.Label(testframe, textvariable=txt)
label1.grid(row=0, column=0)

# Modified lines
testframe.update()
print(testframe.winfo_width())

root.mainloop()
Run Code Online (Sandbox Code Playgroud)