2016-12-19 28 views
0

私はwxpythonを学んでいて、ボタンについて質問しています。私は、ノートブックページのレイアウトを作る別のクラスを呼び出す、ノートブックが形成される別のクラスを呼び出す、ファイル内にメインクラスを持っています。私は他の人と一緒にプログラミングしているので、誰かをプログラミングの方法で使用しなければならない。wxpython +別のクラスを使用するときにボタンをバインドする方法

私の問題は、「addbutton」をクリックしたときには何もしないということです。多分それは私がボタンと呼ぶ方法と関係がありますか?

"self.notebook.PageOne.addbutton.Bind(wx.EVT_BUTTON、self.on_add_to_plotlist)"

のTx

マイコード:

class TabPanelMicroanalysis(wx.Panel): 

    def __init__(self, parent, id): 

    # # general panel information 
    #wx.Frame.__init__(self, parent, id) 
    wx.Panel.__init__(self, parent, id) 

    # list with available measurements + button to add to plot 
    self.lbltempmeasurements = wx.StaticText(self, label="Available measurements:") 
    self.tempmeasurements = ObjectListView(self, wx.ID_ANY,style=wx.LC_REPORT|wx.SUNKEN_BORDER) 
    self.tempmeasurements.SetColumns(microanalysis_options.TempMeasColumndefs) 
    self.tempmeasurements.CreateCheckStateColumn(0) 
    self.addbutton = wx.Button(self, wx.ID_ANY, "Add to plot") 

class NotebookMA(wx.Notebook): 
    def __init__(self, parent,id): 
    wx.Notebook.__init__(self, parent, id) 

    # Create the first tab and add it to the notebook 
    self.PageOne = TabPanelMicroanalysis(self, wx.ID_ANY) 
    self.AddPage(self.PageOne, "Microanalysis name") 


class Main(wx.Frame): 

    #Frame that holds all other widgets 
    def __init__(self, parent = None, id = -1, notify_channel = "chanMicroanalysis", ** kwargs): 

    #general panel information 
    wx.Frame.__init__(self, parent, wx.ID_ANY) 
    self.SetTitle('Microanalysis') 
    self.panel = wx.Panel(self, wx.ID_ANY) 
    pub.subscribe(self.on_message, notify_channel) 

    # add menubar 
    self.menubar = menubar_view(self, wx.ID_ANY) 

    #make notebook 
    self.notebook = NotebookMA(self.panel, wx.ID_ANY) 

    self._do_layout() 
    pub.sendMessage("PyShark", dict(caller=self, module="microanalyse_controller", package="Controllers")) 

def _do_layout(self): 

    self.vsizer = wx.BoxSizer(wx.VERTICAL) 
    self.vsizer.Add(self.notebook,1,wx.EXPAND) 
    self.panel.SetSizer(self.vsizer) 
    self.SetMenuBar(self.menubar) 
    self.Maximize() 
    self.Show() 

def _do_bindings(self): 
    #print "testje" 
    self.notebook.PageOne.addbutton.Bind(wx.EVT_BUTTON, self.on_add_to_plotlist) 


# EVENT handlers ------------------------------------------------------------------------------------------------------- 
def on_message(self, message): 
    pass 

def on_add_to_plotlist(self, event): 

    objectsAddPlotList = self.notebook.PageOne.tempmeasurements.GetSelectedObjects() 
    pub.sendMessage(self.notify_channel, 
        Container(type="EVT_ADD_TO_PLOTLIST", origin=self.notebook.PageOne.tempmeasurements, data=objectsAddPlotList)) 

答えて

1

さて、気にしません。私は私のメインクラスで

self._do_bindings() 

を配置するのを忘れます。■

関連する問題