为什么我的 Tkinter 小部件存储为 None?[重复]
- 2025-01-17 09:22:00
- admin 原创
- 15
问题描述:
我将按钮放入数组中,但当我调用它们时它们不在那里。如果我打印出数组,我会得到:
{0: None, 1: None, 2: None, 3: None, 4: None, 5: None, 6: None, 7: None, ...}
我只是不知道我做错了什么。
from tkinter import *
def main():
pass
if __name__ == '__main__':
main()
b={}
app = Tk()
app.grid()
f = Frame(app, bg = "orange", width = 500, height = 500)
f.pack(side=BOTTOM, expand = 1)
def color(x):
b[x].configure(bg="red") # Error 'NoneType' object has no attribute 'configure'
print(b) # 0: None, 1: None, 2: None, 3: None, 4: None, 5:.... ect
def genABC():
for r in range(3):
for c in range(10):
if (c+(r*10)>25):
break
print(c+(r*10))
b[c+(r*10)] = Button(f, text=chr(97+c+(r*10)), command=lambda a=c+(r*10): color(a), borderwidth=1,width=5,bg="white").grid(row=r,column=c)
genABC()
app.mainloop()
解决方案 1:
每个 Tkinter 小部件的grid
、pack
和方法都就地运行并始终返回。这意味着您不能在创建小部件的同一行上调用它们。相反,应该在下面的行中调用它们:place
`None`
widget = ...
widget.grid(...)
widget = ...
widget.pack(...)
widget = ...
widget.place(...)
因此,在您的代码中它将是:
b[c+(r*10)] = Button(f, text=chr(97+c+(r*10)), command=lambda a=c+(r*10): color(a), borderwidth=1,width=5,bg="white")
b[c+(r*10)].grid(row=r,column=c)
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 项目管理必备:盘点2024年13款好用的项目管理软件
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
热门标签
云禅道AD