0

Linux 内の Xboxdrv パッケージの GUI を作成しています。この GUI を使用して、Xbox360、PS3、またはその他の種類のコントローラーを Linux 内でマウス、ゲーム パッドなどとして構成できるようにしたいと考えています。

GUI アクションから関数を呼び出す方法に興味があります。

たとえば、作成したメニュー ボタンをクリックすると、wx.Frame に保存されている関数が呼び出されます。

4

1 に答える 1

0

私があなたの問題を理解している場合は、メニュー項目を作成し、ユーザーがクリックしたときに機能を実行する方法を知りたいと考えています。

これはとても簡単です。機能が必要です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_MENUid

self.Bind()イベントをバインドする関数を指定するときに、 を含めることも非常に重要ですが、含めselfないでください()。だから書いself.myFunctionた。

最後に、 のメソッドをどのように定義したかに注目してmyFunctio(event)ください。これも重要です。関数がイベントにバインドされている場合、イベントは常にその関数の最初の引数として渡されます。これを処理できる必要があります。

ここで非常に優れたチュートリアルを見つけることができます。

幸運を!

于 2012-06-15T05:42:08.487 に答える