用python编写一个交互式按钮的. 该按钮对用户行为做出反应.
在例子中,在将鼠标指针移到按钮部件所在区域时,EVT_ENTER_WINDOW 事件便会产生,按钮据此改变它的背景颜色.
同样的,鼠标指针移出部件区域时,EVT_LEAVE_WINDOW 事件便会产生.
因此,需要将这两个事件绑定到方法函数(function)上. 有其来适当地改变按钮的颜色或者形状.
专题:wxpython中文教程
例子:
#!/usr/bin/python
#coding=utf-8
#interactivebutton.py
import wx
from wxPython.lib.buttons import wxGenButton
class MyPanel(wx.Panel):
def __init__(self, parent, ID):
wx.Panel.__init__(self, parent, ID, wx.DefaultPosition)
self.btn = wxGenButton(self, -1, "按钮",
pos=wx.Point(125, 100), size=(-1, -1))
self.btn.SetBezelWidth(1)
self.btn.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterButton)
self.btn.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveButton)
def OnEnterButton(self, event):
self.btn.SetBackgroundColour(wx.Color(128, 128, 128))
self.btn.Refresh()
def OnLeaveButton(self, event):
self.btn.SetBackgroundColour(wx.Color(212, 208, 200))
self.btn.Refresh()
class MyApp(wx.App):
def OnInit(self):
frame = wx.Frame(None, -1, 'interactivebutton.py',
wx.DefaultPosition, wx.Size(350, 300))
mypanel = MyPanel(frame, -1)
frame.Center()
frame.Show(True)
self.SetTopWindow(frame)
return True
app = MyApp(0)
app.MainLoop()
以上例子中,使用了 wx.GenButton,而不是基本的 wx.Button.
wx.GenButton 允许改变边框设置,当然 wx.Button 也可以很好地工作。