2012-07-09 84 views
0

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

基本上,我想知道是否有更多的资源密集型需要为每个单独的事物观察许多不同的事件,或者只是一个大事件,它会指出当它被触发时点击哪个事件。

回答

1

如果我有三个按钮完全不同的事情,那么我需要不同的事件处理程序,因为我觉得更容易调试。如果它们都是应用了不同格式化选项的打印按钮,那么我会将它们全部挂接到同一个处理程序,并使用event.GetEventObject()来确定哪一个被调用。我有几次有同一个处理程序处理多个事件时,我有一个工具栏按钮和一个菜单项都调用相同的东西。它更多的与程序流程和调试的简易性有关,只是伴随着练习。

2

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

2

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

Ravenspoint是正确的,因为任何一种方法的资源强度都是微不足道的,仅凭资源强度就不用担心,但单个事件循环更容易维护。