为了账号安全,请及时绑定邮箱和手机立即绑定

Python Tkinter 网格函数被忽略

Python Tkinter 网格函数被忽略

叮当猫咪 2023-07-11 17:01:17
我觉得我在这里错过了一些愚蠢而明显的东西 - 当然小部件应该沿着根窗口的顶部定位,但它们完全忽略了该.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()
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我相信您所要做的就是删除pack()orgrid(..)方法。不建议混合使用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)

希望它能解决您的疑问,如果还有错误,请告诉我


查看完整回答
反对 回复 2023-07-11
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

一次只有一个几何管理器可以管理一个小部件。正如问题标题所说,当您在.pack()调用后调用时.grid(...), 的效果grid(...)将被忽略。对于任何给定的小部件,您只能使用一个,并且需要与具有相同父级的所有小部件保持一致。



查看完整回答
反对 回复 2023-07-11
?
慕标5832272

TA贡献1966条经验 获得超4个赞

packgridplace是可用于放置小部件的 3 种方法。tkinter将它们称为“几何管理器”。其中每一个都提供了一种独特的方式来定位和缩放小部件。

  • pack将您的小部件停靠到定义的或可用的边缘

  • grid行为就像一张桌子

  • place允许您定义任意位置(和大小)

单个小部件不能附加多个几何管理器,并且父部件不能包含在pack和之间交替的小部件grid。这意味着(例如),如果您有很多Frame使用 的小部件pack,则这些小部件都不能使用grid,反之亦然。place不受此限制,可以在任何地方使用。


查看完整回答
反对 回复 2023-07-11
  • 3 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信