编辑2:我意识到我忘了把字典顶部的变量名改成。。。我现在很生气。你知道吗
编辑:我把这些执行官都改成了字典。你知道吗
首先,请不要因为我使用exec()/eval()而生气。这是万不得已的办法,我不会为此付出代价。暴力写出变量名似乎太长了,我想不出更好的方法。你知道吗
不管怎样,我正在用pythontkinter编写一个日历应用程序,更改月份对我来说是个问题。在日历中,每当有人更改一个月时,这些天显然是从一周中不同的一天开始的(2014年5月从周四开始,2014年6月从周日开始)。你知道吗
不过,为了显示一个月中的几天,我给了每天一个按钮和它自己的特殊变量名
exec('self.daynum'+str(7*(w-2)+d)+
' = Button(text=day, width=2)')
其中w和d是周数和日数的变量。所以,当我想隐藏这些按钮时,我认为我应该使用
exec('self.daynum'+str(day)+'.grid_forget()')
其中一天是循环超过0-35和清除整个网格(理论上)。但是,它却引发了AttributeError,坚称这些变量不存在。你知道吗
有没有办法解决这个问题,隐藏我不想要的按钮,或建议如何改造程序不使用 这些(但仍然隐藏我不想要的按钮)?你知道吗
没有好的方法来修复这个根本上有缺陷的方法。有一种更简单的方法,即使用字典来保存小部件:
这样做将使代码更易于管理。你知道吗
使用列表和dict,您真的不需要使用eval/exec。 下面的示例创建一个月的日历并保留按钮列表。 您以后可以使用dayButtons[0]等工具访问这些按钮。 所以以后要隐藏按钮,可以执行dayButtons[day].grid\u forget()。你知道吗
相关问题 更多 >
编程相关推荐