问题描述
我觉得这里缺少一些显而易见的东西-当然,这些小部件应该只放在根窗口的顶部,但是它们完全忽略了.grid()
函数。
当我打印grid_size()
时,它返回了(0,0)
。为什么?!
任何帮助都非常感激:)
title = tk.Label(root,text="Enter a city below")
title.grid(row=0,column=0)
title.pack()
e = tk.Entry(root)
e.grid(row = 0,column = 1)
e.pack()
current_clicker = ttk.Button(root,text = "Current forecast",command=current)
current_clicker.grid(row=0,column=2)
current_clicker.pack()
hourly_clicker = ttk.Button(root,text = "By hour",command=hourly)
hourly_clicker.grid(row=0,column=3)
hourly_clicker.pack()
minute_clicker = ttk.Button(root,text = "By minute",command=minute)
minute_clicker.grid(row=0,column=4)
minute_clicker.pack()
daily_clicker = ttk.Button(root,text = "Daily",command=daily)
daily_clicker.grid(row=0,column=5)
print(daily_clicker.grid_size())
daily_clicker.pack()
解决方法
我相信您要做的就是删除pack()
或grid(..)
方法。不建议将pack()
和grid()
混合使用,因为这样可能会消除彼此的影响并导致此类错误。
我建议您摆脱pack()
,因为与grid(...)
相比,pack()
是一种更加有序的小部件管理方式。
小例子:
hourly_clicker = ttk.Button(root,text = "By hour",command=hourly)
hourly_clicker.grid(row=0,column=3)
minute_clicker = ttk.Button(root,text = "By minute",command=minute)
minute_clicker.grid(row=0,column=4)
希望它能解决您的疑问,如果还有其他错误,请告诉我
欢呼
,一次只有一个几何管理器可以管理一个小部件。因此,就像问题的标题所说的一样,当您在调用.pack()
之后再调用.grid(...)
时,grid(...)
的作用将被忽略。
对于任何给定的小部件,您只能使用一个,并且必须与具有相同父级的所有小部件保持一致。
pack
,grid
和place
是可用于放置窗口小部件的3种方法。 tkinter
将它们称为“几何管理器”。每一种都提供了一种独特的方式来定位和缩放小部件。
-
pack
会将您的窗口小部件停靠在已定义或可用的边缘 -
grid
的行为就像桌子一样 -
place
允许您定义任意位置(和大小)
单个小部件不能附加多个几何图形管理器,父级不能包含在pack
和grid
之间交替的小部件。举例来说,这意味着,如果您有Frame
个充满pack
的小部件,则这些小部件都不能使用grid
,反之亦然。 place
不受此限制,可以在任何地方使用。