【发布时间】:2010-11-13 12:11:09
【问题描述】:
我进行了几次搜索,但找不到有关此主题的任何内容。也许是因为它是常见的程序员知识(我不是程序员,我是从必要中学到的),或者因为我走错了路。
我想要关于如何管理 GUI 按钮状态的想法/建议。例如,如果我有一个允许用户导入和处理数据的程序,那么在成功导入数据之前,某些功能应该是不可访问的,或者如果他们想要绘制某些数据,他们需要先选择要绘制哪些数据点击“图表”或“导出”按钮。即使在我建立的简单程序中,这些关系似乎也很快变得复杂。说“用户在完成‘B’和‘C’之前不能点击按钮‘A’似乎很简单,如果按钮‘D’或‘取消’按钮,则‘A’应该被禁用。但是一个按钮要跟踪的内容很多。到目前为止,我已经尝试了两件事:
在按钮的回调函数中更改/检查按钮状态。所以在上面的例子中,我会在按钮 B 和 C 的回调中有代码来检查是否应该启用 A。在按钮 D 和取消的回调中,我将有代码来禁用按钮 A。这会很快变得复杂,并且随着代码的变化难以维护。
在每个按钮回调中设置布尔变量(或稍后使用 cget() 检查状态)并在轮询函数中检查变量以确定应启用或禁用哪些按钮。
我只是不确定这一点。我想让代码尽可能简短和易于理解(并且以后易于编辑),但我不喜欢每隔几百毫秒轮询所有按钮状态只是为了按钮“管理”的想法。您可以将相同的想法扩展到复选框、菜单项等……但我想在这里说明其他人所做的事情以及他们这样做的原因。
【问题讨论】:
标签: python button tkinter state