我想要获得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()
解决方法
需要首先调用update方法,以便呈现窗口小部件.
如果不是,则其宽度等于零.
这在 this answer中解释.
如果不是,则其宽度等于零.
这在 this answer中解释.
现在,testframe [‘width’]的问题在于它只是窗口小部件实际宽度的暗示,如this answer所述.
from tkinter import * from tkinter import ttk root = Tk() w = '400' h = '100' root.geometry('{}x{}'.format(w,column=0) # Modified lines testframe.update() print(testframe.winfo_width()) root.mainloop()