您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

tkinter'NoneType'对象没有属性'pack'(仍然有效吗?)

tkinter'NoneType'对象没有属性'pack'(仍然有效吗?)

当您收到诸如之类的错误'nonetype' object has no attribute 'X',表明您有一个变量值为None,并且正在尝试执行None.X()。不管您使用的是tkinter还是任何其他软件包。因此,您必须问自己:“为什么我的变量具有值None?”

问题是这一行:

but1 = tkinter.Button(window, text="Button1", command=btn1).grid(column = 1, row = 1)

在python中,当您执行时foo=x(...).y(...)foo将始终具有最后一个调用函数的值。在上述情况下,but将具有由返回的值.grid(column = 1, row = 1),并且grid始终返回None。因此,but1None,因此您将获得’‘nonetype’对象没有属性’pack’“。

因此,直接的解决方法是将您的呼叫移至grid另一行:

but1 = tkinter.Button(window, text="Button1", command=btn1)
but1.grid(column = 1, row = 1)

这样,错误将消失。

但是,您还有另一个问题。打电话grid,然后再打电话pack不会按照您认为的去做。您只能有一个效果几何管理器在同一时间对于任何给定的部件,都gridpack有几何经理。如果这样做了but1.grid(...),以后but1.pack(...),任何调用grid产生的效果都将被丢弃,就像您一开始从未调用grid过一样。

您必须决定是要使用grid还是要使用pack,并且只对根窗口中的所有小部件使用一个或另一个

dotnet 2022/1/1 18:36:28 有364人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶