wxpython按钮事件问题

查看:245
本文介绍了wxpython按钮事件问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

在用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()

解决方案

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"我被点击了!")

这篇关于wxpython按钮事件问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆