0

我正在创建一个自定义模块来帮助我用更少的代码和更简洁的语法更快地编写 python。

目前我正在创建一个更简洁的 wx.Accelerator 版本的函数。

到此结束时,我希望:

accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL,  ord('O'), PUT_ID_HERE),
                                 (wx.ACCEL_CTRL,  ord('S'), PUT_ID_HERE)])

self.SetAcceleratorTable(accel_tbl)

成为:

accelerate((wx.ACCEL_CTRL,'O',PUT_ID_HERE),
           (wx.ACCEL_CTRL,'S',PUT_ID_HERE))

唯一的问题是..我不知道从哪里开始....我知道如何通过参数处理信息,但我从来没有学会如何处理参数内包含动态信息的多个元组。

有人可以提供见解吗?谢谢你。

编辑:

当前代码:

## Create a cleaner accelerator
def accelerate(*args):
    accel_tbl = wx.AcceleratorTable(list(args))
    wx.SetAcceleratorTable(accel_tbl)

当前通话:

import Sky

Sky.accelerate((wx.ACCEL_CTRL,'s',wx.ID_ANY),
               (wx.ACCEL_CTRL,'t',wx.ID_ANY))
4

1 回答 1

0

将此方法添加到您的自定义wx.Window类中:

def accelerate(self,*args):
    accel_tbl = wx.AcceleratorTable(args)
    self.SetAcceleratorTable(accel_tbl)

然后按如下方式调用它:

win = YourCustomWindowClass(PUT_WINDOW_ARGUMENTS_HERE)
win.accelerate((wx.ACCEL_CTRL,'O',PUT_ID_HERE),(wx.ACCEL_CTRL,'S',PUT_ID_HERE))

或者,您可以将其定义为带wx.Window参数的函数,如下所示:

def accelerate(win,*args):
    accel_tbl = wx.AcceleratorTable(args)
    win.SetAcceleratorTable(accel_tbl)

*args所有位置参数表示为一个元组。如果AcceleratorTable确实需要一个列表,您可以使用list(args)它作为参数(即accel_tbl = wx.AcceleratorTable(list(args)))。

*args 你可以在这里了解一下。

于 2013-03-19T09:02:38.090 回答