我正在努力提高我的 Python 和 tkinter 技能。此刻我正在阅读一本关于 tkinter 的书。我注意到在面向对象的 GUI 应用程序中,作者以这种方式定义了按钮回调:
def on_fast_forward_button_clicked(self):
self.player.fast_forward()
def on_rewind_button_clicked(self):
self.player.rewind()
所以,如果我理解正确的话,我们正在为应用程序类中的每个按钮编写方法。一个带有“间接”回调,只调用事件,另一个带有预期的动作本身,由前一个调用。为什么我们要编写这样的代码,而不是只使用一种方法?
没有具体的原因,在你给出的例子中,我绝对不会那样做。
这真的很简单:一般来说,每个按钮都应该与一个功能相关联。就是这样。这就是规则。该功能的作用完全取决于您。
如果它所做的只是一件事情,那么它没有理由不能直接调用那件事情。如果它需要做不止一件事,创建一个特殊用途的函数来完成按钮应该做的所有事情,并让该按钮调用该函数。
话虽如此,“响应按钮”和“执行操作”之间存在概念差异。例如,您可能有两种或三种方式来执行快进功能:您可能在菜单栏上有一个命令、在右键单击菜单上有一个命令、一个专用的快进按钮和一个键盘加速器。
根据它们的实现方式,它们调用的函数可能需要也可能不需要额外的参数(例如:绑定到事件的函数总是得到一个事件对象)。在这种情况下,通常更容易拥有一个专门用于响应事件的专用函数,并且该专用函数调用更通用的fast_forward
函数。
归根结底,一切都与清晰度有关。如果您认为当您让单个函数执行两个角色(快进和响应按钮单击)时,它会使程序更容易理解,那么请务必这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句