wxpython按钮事件问题
本文介绍了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屋!
查看全文