2012-10-08 54 views
0

我有一個幾乎與the wxPy Wiki相同的Python腳本,並且我希望在每次更改標籤時在(無縮進)中運行一個函數。我試過在0123行使用行後面的theFunction(),這個行在這個筆記本使用的三個類中。當我這樣做時,窗戶在關閉後立即關閉,終端中沒有錯誤。我究竟做錯了什麼?下面是我通過筆記本電腦使用的每個類:更改wxPython Notebook時的調用函數?

class Textures(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.textureslist = wx.ListBox(choices = ['One', 'Two', 'Three'], id = -1, name = 'textureslist', parent = self, pos = (6, 0), size = (382, 150)) 
     getDivVars() 

編輯:有人退出的原因是不小心使用App,而不是PySimpleApp有關。但是,每次更改選項卡時,該列表仍然不會更新(getDivVars())。我仍然需要這樣做。

+0

我懷疑應用程序與它有任何關係。 PySimpleApp已棄用。 –

+0

@MikeDriscoll不知道它已被棄用。我改變了應用程序和PySimpleApp之間,這使得運行和不運行之間的區別。 – tkbx

+0

這很奇怪。 wx.App(False)應該等同於wx.PySimpleApp() –

回答

1

要在筆記本頁面發生變化時調用函數,請將EVT_NOTEBOOK_PAGE_CHANGED事件綁定到函數或方法。採取「簡單wx.Notebook Example`爲出發點,你會添加一行

nb.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.some_method) 

,或者,如果你想調用類的代替方法之外的功能,

nb.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, some_function) 

some_function需要採用單個參數,some_method需要除self之外還需要一個參數。

+0

EVT_NOTEBOOK_PAGE_CHANGED是否通常綁定到它覆蓋的綁定或類似的東西?當我添加這一行時,它會導致頁面在點擊時不會改變。 – tkbx

+0

它也不會在第一頁被點擊時運行該功能... – tkbx

+1

原來我需要EVT_NOTEBOOK_PAGE_CHANGING(改變而不是改變) – tkbx