这个程序是在单击按钮时“单击”wx.textctrl。
它没有运行。
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))
button = Click_btn()
btn.Bind(wx.EVT_BUTTON, button.click_btn)
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)
class Click_btn(Mainwindow):
def click_btn(self, event):
Mainwindow.tc.WriteText("clicked\n")
if __name__=="__main__":
app = wx.App()
Mainwindow(None, -1, u"sample")
app.MainLoop()
立即错误面板消失。
也许Click_btn类错了。
我应该在哪里更改?
答案 0 :(得分:0)
你在代码中弄乱了几个概念:
Click_btn
可能不应来自MainWindow
,而应来自wx.Button
。click_btn
不应访问MainWindow
,而应访问MainWindow
的实例。MainWindow
的方法,并将其绑定到按钮。我建议您阅读http://wiki.wxpython.org/Getting%20Started和http://www.diveintopython.net/object_oriented_framework/index.html,然后再试一次。
答案 1 :(得分:0)
您的Click_btn类是Mainwindow类的子类,它带有3个参数 init ,以及它自身。当您创建新的Click_btn时,您不会传入任何参数。
在自己的班级中使用click_btn并没有多大意义;将它移动到Mainwindow类。以下应该有效:
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)
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):
self.tc.WriteText("clicked\n")
if __name__=="__main__":
app = wx.App()
Mainwindow(None, -1, u"sample")
app.MainLoop()