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 に答える