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