Python Tkinter 网格函数被忽略
Python Tkinter grid functions ignored
我觉得我在这里遗漏了一些非常明显的东西 - 当然小部件应该只位于根 window 的顶部,但它们完全忽略了 .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()
,因为与 pack()
相比,grid(...)
是一种更有序的管理小部件的方式。
小例子:
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)
希望它解决了你的疑惑,如果还有错误,请告诉我
干杯
一次只有一个几何管理员可以管理一个小部件。就像问题的标题所说的那样,当您在调用 .grid(...)
之后调用 .pack()
时, grid(...)
的影响将被忽略。
对于任何给定的小部件,您只能使用一个,并且需要与具有相同 parent.
的所有小部件保持一致
pack
、grid
和 place
是可用于放置小部件的 3 种方法。 tkinter
将这些称为“几何管理器”。其中每一个都提供了一种独特的方式来定位和缩放小部件。
pack
会将您的小部件停靠到定义的或可用的边缘
grid
表现得像 table
place
允许您定义任意位置(和大小)
一个单独的小部件不能有一个以上的几何管理器附加到它,父部件不能包含在 pack
和 grid
之间交替的小部件。这意味着(例如),如果您有 Frame
个使用 pack
的小部件,那么 none 个小部件可以使用 grid
和 vise-versa。 place
不受此限制,可以在任何地方使用。
我觉得我在这里遗漏了一些非常明显的东西 - 当然小部件应该只位于根 window 的顶部,但它们完全忽略了 .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()
,因为与 pack()
相比,grid(...)
是一种更有序的管理小部件的方式。
小例子:
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)
希望它解决了你的疑惑,如果还有错误,请告诉我
干杯
一次只有一个几何管理员可以管理一个小部件。就像问题的标题所说的那样,当您在调用 .grid(...)
之后调用 .pack()
时, grid(...)
的影响将被忽略。
对于任何给定的小部件,您只能使用一个,并且需要与具有相同 parent.
pack
、grid
和 place
是可用于放置小部件的 3 种方法。 tkinter
将这些称为“几何管理器”。其中每一个都提供了一种独特的方式来定位和缩放小部件。
pack
会将您的小部件停靠到定义的或可用的边缘grid
表现得像 tableplace
允许您定义任意位置(和大小)
一个单独的小部件不能有一个以上的几何管理器附加到它,父部件不能包含在 pack
和 grid
之间交替的小部件。这意味着(例如),如果您有 Frame
个使用 pack
的小部件,那么 none 个小部件可以使用 grid
和 vise-versa。 place
不受此限制,可以在任何地方使用。