wxpython按钮事件问题
ringa_lee
ringa_lee 2017-04-17 17:36:15
0
1
553

在用wxpytohn练习事件,做了一个测试程序,鼠标点击按钮,执行testEvent方法弹出一个MessageBox。
在运行的时候,TestEvent方法却直接执行了,而且点击按钮没有响应。
大家帮我看看是什么问题导致的?

#encoding:utf-8
import wx

class TestClass(wx.Frame):

    txt = None

    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(600, 600))
        self.Center()

        pannel = wx.Panel(self, -1)

        mybutton = wx.Button(pannel, label=u'我是按钮', pos=(30, 30), size=(80, 26))
        self.txt = wx.StaticText(pannel, -1, u'', style=wx.ALIGN_RIGHT, pos=(30, 64), size=(200, 200))

        self.Bind(wx.EVT_LEFT_DOWN, self.testEvent(), mybutton)

        self.Show()

    def testEvent(self):
        wx.MessageBox(u"我被点击了!")


app = wx.App(False)
frame = TestClass(None, 'Test Program')
app.MainLoop()
ringa_lee
ringa_lee

ringa_lee

Antworte allen(1)
大家讲道理
class TestClass(wx.Frame):

    txt = None

    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(600, 600))
        self.Center()

        pannel = wx.Panel(self, -1)
        #mybutton最好是成员变量,否则初始化完毕后,非成员变量的mybutton就被释放了
        self.mybutton = wx.Button(pannel, label=u'我是按钮', pos=(30, 30), size=(80, 26))
        self.txt = wx.StaticText(pannel, -1, u'', style=wx.ALIGN_RIGHT, pos=(30, 64), size=(200, 200))
        #你之前写的是self.testEvent(),这里不应该加括号,表示一个调用,另外,Bind用法也不对
        self.mybutton.Bind(wx.EVT_LEFT_DOWN, self.testEvent)
        self.Show()
    # 改函数接口
    def testEvent(self, event):
        wx.MessageBox(u"我被点击了!")
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!