我正在使用Tkinter在Python上开发基于文本的游戏。窗口一直包含一个标签和几个按钮(大多数是3个)。如果它没有GUI,我可以使用Pickle甚至Python i / o(.txt文件)来保存数据,然后再检索它。但是,告诉程序加载确切的小部件而不丢失绑定,按钮等的最佳方法是什么?命令,类等? P.S。:Buttons导致清理小部件框架并召唤新的小部件。我想把一个lambda(按钮的命令)分配给一个变量,然后保存它(Pickle?)以便将来加载它并在图中得到正确的点。我应该去做还是有更好的替代方法来完成这件事? (如果使用lambda可能有用,我仍然很高兴看到你这样做。)
答案 0 :(得分:1)
你需要在某种配置文件中保存东西。在内容中,我推荐使用JSON和YAML作为文件格式,以便于解析。
另外,不要忘记Windows注册表(虽然可移植性丢失了)。
答案 1 :(得分:1)
我的理解是您需要一个小部件管理器,将它们放在您想要的位置,并且很容易获取值。
创建一个名为Manager的新类,创建两个函数,_ setNewWidget,_deleteWidget,如下所示:
class Manager():
def __init__(self, *args, **kwargs):
objects = {}
def _createButton(self, frame, id, function, etc):
# object[id] = frame.Button(function, etc, ...) i dnt' know sintaxes, but this is the way
def _deleteWidget(self, id):
# object[id] = None or del(object[id]) same here
要获得,只需:
manager = Manager()
manager._createWidget("button_fase_one", frameTk, etc, etc)
manager.objects["button_fase_one"].changeFrame() # example
print(manager.objects["button_fase_one"].text)
通过这种方式,你可以在你想要的地方创建物体和blit。
要保存数据,只需创建另一个函数并保存为json。