wxpython中的事件处理

wxpython中的事件处理,python,events,wxpython,wxwidgets,Python,Events,Wxpython,Wxwidgets,在wxpython中,通过为每个事件处理程序创建一个单独的函数(比如为每个按钮单击创建一个单独的函数)来处理事件更好吗?还是创建一个大的按钮处理程序,然后确定从那里单击的按钮更好 基本上,我想知道,对于每一件单独的事情,有许多不同的事件被观看,或者只有一个大事件可以确定它被触发时单击了哪个事件,这是一种资源密集型的做法。不用担心。这两种方案所需的资源都是微不足道的,尤其是在python脚本中。专注于以最容易理解和维护的方式设计代码。别担心。这两种方案所需的资源都是微不足道的,尤其是在python

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


基本上,我想知道,对于每一件单独的事情,有许多不同的事件被观看,或者只有一个大事件可以确定它被触发时单击了哪个事件,这是一种资源密集型的做法。

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

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

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


RavenPoint是正确的,因为任何一种方法的资源强度都是微不足道的,仅基于资源强度,您不必担心,但单个事件循环更易于维护。

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


RavenPoint是正确的,因为任何一种方法的资源强度都很小,仅基于资源强度,您不必担心,但单个事件循环更容易维护。

如果我有三个按钮,它们可以做完全不同的事情,然后我希望为它们提供不同的事件处理程序,因为我发现这样更容易调试。如果它们都是应用了稍微不同格式选项的打印按钮,那么我将把它们都连接到同一个处理程序,并使用event.GetEventObject()确定调用哪个按钮。我有几次让同一个处理程序处理多个事件,当时我有一个工具栏按钮和一个菜单项都调用同一个东西。它更多地与程序流程和调试的易用性有关,而这只是实践的结果。

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