0

在 wxpython 中,最好是通过为每个事件处理程序创建一个单独的函数(例如为每个按钮单击一个单独的函数)来处理事件,还是创建一个大的 button_handler,然后确定从那里单击的按钮?

基本上,我想知道为每个单独的事物监视许多不同的事件是否会占用更多资源,或者只是一个大事件会确定在触发时单击了哪个事件。

4

3 回答 3

2

别担心。这两种方案所需的资源都是微不足道的,尤其是在 python 脚本中。专注于以最容易理解和维护的方式设计代码。

于 2012-07-09T16:52:12.283 回答
2

资源强度在这里不是您的问题,但您肯定希望为此使用一个大事件循环。由于全局解释器锁,python 中的许多事件处理程序都有处理事件队列的烦人方式,并且在某些事件处理程序中,如果不从堆栈中删除它甚至可能无法检查事件(例如 VPython),等等在这些情况下,如果您在代码中使用多项检查,您很可能会遇到奇怪且难以跟踪的错误。如果您使用一个大型事件,这将不会发生,或者如果发生,将更容易追踪。

Ravenspoint 是正确的,因为这两种方法的资源强度都是微不足道的,仅基于资源强度你不应该担心它,但是单个事件循环更容易维护。

于 2012-07-09T17:14:07.883 回答
1

如果我有三个按钮做完全不同的事情,那么我需要为它们提供不同的事件处理程序,因为我发现这更容易调试。如果它们都是应用了略微不同格式选项的打印按钮,那么我会将它们全部连接到同一个处理程序并使用 event.GetEventObject() 来确定调用了哪个。我有几次由同一个处理程序处理多个事件是当我有一个工具栏按钮和一个菜单项都调用相同的东西时。它更多地与程序流程和易于调试有关,而这只是随着实践而来的。

于 2012-07-09T19:10:57.477 回答