此程序使用wxpython don';跑不动
这个程序是当点击按钮时,wx.textctrl被写为“点击” 它不跑了此程序使用wxpython don';跑不动,python,wxpython,Python,Wxpython,这个程序是当点击按钮时,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(
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类错误
我应该在哪里更改?您的代码中有几个概念弄乱了:
可能不应从单击\u btn
派生,而应从主窗口
派生wx.按钮
不应访问click\u btn
,而应访问main窗口
的实例main窗口
- 最简单的解决方案是将事件处理程序实现为
的方法,并将其绑定到按钮MainWindow
我建议先读一遍,然后再试一次。您的Click\u 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()