2016-12-24 40 views
0

wxpythonのリボンボタンを使用してbindメソッドをpython 3.4(Phoenixバージョン3.0.3)で使用する方法を知りたいとボタンが、私はエラーが表示されるすべての時間:イベントをリボンボタンにバインドする方法wxpython-phoenixをクリックする

ファイル "C:\ Anaconda3 \ lib \ site-packages \ wx \ core.py"、行1200、_EvtHandler_Bind assert sourceはNoneまたはhasattrですソース、 'GetId') AssertionError

可能であれば簡単な例を参考にしてください。前もって感謝します。

答えて

0

私は

import wx.ribbon as RB 

の代わりに使用して私の問題への解決策が見つかりました:私は私のために働いた私の答えを残して

import wx 
import wx.ribbon as RB 
# Class code goes here... 
self.ribbon = RB.RibbonBar(self,wx.NewId()) 
self.page_home = RB.RibbonPage(self.ribbon, wx.NewId(), "Home") 
self.panel1 = RB.RibbonPanel(self.page_home, wx.ID_ANY, "Panel#1") 
self.button_bar1 = RB.RibbonButtonBar(self.panel1) 
bmp = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_OTHER, wx.Size(32, 32)) 
self.button_bar1_Exit = self.button_bar1.AddButton(wx.ID_ANY, "Exit", bmp, 'Close Window') 
self.button_bar1.Bind(RB.EVT_RIBBONBUTTONBAR_CLICKED, self.on_button_bar1) 
def on_button_bar1(self, event): 
    button = event.GetButton() 
    if button == self.button_bar1_Exit: 
     self.Close() 

:で

import wx.lib.agw.ribbon as RB 

との結合をしばらくの間それを受け入れずに、より良いアイデアを得るチャンスを与えてくれるでしょう。そうでなければ、私は私のものを受け入れます。

+0

は、私は私の質問の一部ように、いずれかは申し訳ありません – Hzine

+0

の違いは何であるかを教えて、私は「wx.ribbon」と「wx.libの間を意味することができ、実際にはwxPythonのと非常に専門的ではないと思います。 agw.ribbon '?別の質問に入れる必要がある場合は教えてください。 – Hzine

+0

'wx.ribbon'には、C++リボンクラスの周りのラッパーが含まれています。 'wx.lib.agw.ribbon'には、Pythonコードで書かれた代わりの実装が含まれています。典型的には、このようなものはラップされたC++バージョンとほとんど互換性がありますが、Python開発者が独自のカスタムコードなどでデバッグしたり、拡張したりする方が簡単です。 – RobinDunn

0

wx.ID_ANYを使用する代わりにIDを割り当てると、特定のイベントハンドラを各ボタンにバインドできます。単一のイベントハンドラで大規模で成長するif/elif/elseブロックを持つよりもきれいです。

import wx 
import wx.ribbon as RB 

BUTTON_EXIT_ID = wx.NewId() 

# Class code goes here... 
self.ribbon = RB.RibbonBar(self,wx.NewId()) 
self.page_home = RB.RibbonPage(self.ribbon, wx.NewId(), "Home") 
self.panel1 = RB.RibbonPanel(self.page_home, wx.ID_ANY, "Panel#1") 
self.button_bar1 = RB.RibbonButtonBar(self.panel1) 
bmp = wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_OTHER, wx.Size(32, 32)) 
self.button_bar1_Exit = self.button_bar1.AddButton(BUTTON_EXIT_ID, "Exit", bmp, 'Close Window') 
self.button_bar1.Bind(RB.EVT_RIBBONBUTTONBAR_CLICKED, self.on_exit, id=BUTTON_EXIT_ID) 

def on_exit(self, event): 
    self.Close() 
関連する問題