該程序是當單擊按鈕時,wx.textctrl被寫入「單擊」。使用類時的Python類型錯誤(wx.Python)
此代碼無誤地運行。
import wx
class Mainwindow(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(300, 300))
panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
btn = wx.Button(panel, -1, 'OK', size=(70, 30))
btn.Bind(wx.EVT_BUTTON, self.click_btn) #line 12
hbox1.Add(btn, 0)
vbox.Add(hbox1, 0)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
self.tc = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE)
hbox2.Add(self.tc, 1, wx.EXPAND)
vbox.Add(hbox2, 1, wx.EXPAND)
panel.SetSizer(vbox)
self.Centre()
self.Show(True)
def click_btn(self, event): #line 27
self.tc.WriteText("clicked\n") #line 28
if __name__=="__main__":
app = wx.App()
Mainwindow(None, -1, u"sample")
app.MainLoop()
但是,如果此代碼以這種方式變化,它會得到錯誤。
變化到管線12
btn.Bind(wx.EVT_BUTTON, Click_btn.click_btn)
變化到線27和28
該錯誤是:類型錯誤:未結合的方法click_btn()必須與Click_btn實例作爲第一個參數被稱爲(改爲CommandEvent實例)
我不知道如何處理這個錯誤。
* Postscript
我閱讀答案,並且此代碼更改。但它不運行...
改變管線12
button = Click_btn()
btn.Bind(wx.EVT_BUTTON, button.click_btn)
改變線路27和28
class Click_btn(Mainwindow):
def click_btn(self, event):
Mainwindow.tc.WriteText("clicked\n")
請示教點,我應該改變。