Linux 内の Xboxdrv パッケージの GUI を作成しています。この GUI を使用して、Xbox360、PS3、またはその他の種類のコントローラーを Linux 内でマウス、ゲーム パッドなどとして構成できるようにしたいと考えています。
GUI アクションから関数を呼び出す方法に興味があります。
たとえば、作成したメニュー ボタンをクリックすると、wx.Frame に保存されている関数が呼び出されます。
Linux 内の Xboxdrv パッケージの GUI を作成しています。この GUI を使用して、Xbox360、PS3、またはその他の種類のコントローラーを Linux 内でマウス、ゲーム パッドなどとして構成できるようにしたいと考えています。
GUI アクションから関数を呼び出す方法に興味があります。
たとえば、作成したメニュー ボタンをクリックすると、wx.Frame に保存されている関数が呼び出されます。
私があなたの問題を理解している場合は、メニュー項目を作成し、ユーザーがクリックしたときに機能を実行する方法を知りたいと考えています。
これはとても簡単です。機能が必要ですself.Bind()
。これを見てください:
ID_MY_MENU_FUNCTION = wx.NewId() #declares a new, unique ID for my menu
class Frame(wx.Frame):
def __init__(self, parent, idNum, title):
wx.Frame.__init__(self, parent, idNum, title)
menu = wx.Menu()
menu.Append(ID_MY_MENU_FUNCTION, 'My Function') #add my function to the menu
menu_bar = wx.MenuBar()
menu_bar.Append(menu, 'My Menu') #add my menu to the menu bar
self.SetMenuBar(menu_bar) #set the menu bar
self.Bind(wx.EVT_MENU, self.myFunction, id=ID_My_MEN_FUNCTION) #run self.myFunction() when someone clicks the menu item
def myFunction(event):
#perform your function here
引数self.Bind()
の設定を呼び出すときは重要です。id
これは、 が引数と同じ ID を持つself.myFunction()
場合にのみ呼び出されることを意味します。また、各メニュー項目には独自の一意の ID が必要です。そうしないと、ユーザーがクリックしたメニュー項目をアプリケーションが認識できなくなります。wx.EVT_MENU
id
self.Bind()
イベントをバインドする関数を指定するときに、 を含めることも非常に重要ですが、含めself
ないでください()
。だから書いself.myFunction
た。
最後に、 のメソッドをどのように定義したかに注目してmyFunctio(event)
ください。これも重要です。関数がイベントにバインドされている場合、イベントは常にその関数の最初の引数として渡されます。これを処理できる必要があります。
ここで非常に優れたチュートリアルを見つけることができます。
幸運を!