不知道从哪里开始使用这些参数

时间:2013-03-19 08:56:30

标签: python wxpython

我正在创建一个自定义模块,以帮助我用更少的代码和更清晰的语法更快地编写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))

1 个答案:

答案 0 :(得分: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 here