Logo

郎哥编程

文本按钮和图像按钮控件

2019-07-09 604

按钮控件允许用户通过单击来执行操作。按钮控件即可以显示文本,也可以显示图像,当按钮被单击时,它的外观应该发生变化,看起来像是被按下,然后释放。

显示文本的按钮控件是wx.Button,显示图像的按钮控件是wx.BitmapButton。

同样,在一个窗体中创建按钮控件也非常简单,只需要调用按钮控件的构造函数实例化按钮控件类即可。

wx. Button的构造函数为:

Button(parent, id=ID_ANY, label="", pos=DefaultPosition,
       size=DefaultSize, style=0, validator=DefaultValidator,
       name=ButtonNameStr)

wx. Button构造函数的参数同文本控件构造函数的参数完全相同,参数意义可参见文本控件的构造函数。

wx.Button类有一个跨平台的样式标记:wx.BU_EXACTFIT。如果定义了这个标记,那么按钮就不把系统默认的尺寸作为最小的尺寸,而是把能够恰好填充标签的尺寸作为最小尺寸。你可以使用标记wx.BU_LEFT, wx.BU_RIGHT, wx.BU_TOP, 和 wx.BU_BOTTOM来改变按钮中标签文本的对齐方式。

wx.BitmapButton的构造函数:

BitmapButton(parent,id=ID_ANY,bitmap=NullBitmap,pos=DefaultPosition,size=DefaultSize,style=BU_AUTODRAW, validator=DefaultValidator,
             name=ButtonNameStr)

wx.BitmapButton的构造函数与前面控件不同的是,第三个参数的类型是wx.Bitmap,wx.Bitmap是一个位图类。在调用wx.BitmapButton构造函数之前,需要创建wx.Bitmap对象。

响应按钮事件

wx.Button和wx.BitmapButton被用户单击时,会触发一个命令事件,事件类型是EVT_BUTTON。

案例代码:

class ButtonExampleFrame(wx.Frame):
     def __init__(self, *args, **kw):
 
        # 调用父类的 __init__ 方法
        super(ButtonExampleFrame, self).__init__(*args, **kw)
       
        #创建面板
        panel = wx.Panel(self, -1)
 
        #创建文本按钮
        textButton = wx.Button(panel, -1, "我是一个按钮", (100, 10),(200,45))
       
        # 绑定按钮事件
        self.Bind(wx.EVT_BUTTON, self.OnTexButtonDown,textButton)
 
        #创建wx.Bitmap对象
        pic=wx.Image('d:\\button.bmp',wx.BITMAP_TYPE_BMP).ConvertToBitmap()
       
        #创建图像按钮
        bitmapButton=wx.BitmapButton(panel,-1,pic,(100,100),(160,50))
       
        # 绑定按钮事件
        self.Bind(wx.EVT_BUTTON, self.OnBitmapButtonDown,bitmapButton)
 
     #textButton事件处理方法 
     def OnTexButtonDown(self,event):
          wx.MessageBox("您按下了TexButton")
 
     #bitmapButton事件处理方法
     def OnBitmapButtonDown(self,event):
          wx.MessageBox("您按下了TexButton")
 
 
def main():
    app = wx.App()
    frame = ButtonExampleFrame(None, title='按钮控件')
    frame.Show(True)
    app.MainLoop()
 
if __name__ == '__main__':
    main()

案例代码执行效果图:

image.png                                             

 

wx.ToggleButton可以创建一个开关按钮,开关按钮和文本按钮基本相同,都是显示带文字的按钮。不同的是文本按钮按下去后又被释放。开关按钮按下去后,将会一直保持按下去的状态,直至再次按下该按钮,按钮才会被释放。

案例代码:

import wx
 
class ToggleButtonExampleFrame(wx.Frame):
     def __init__(self, *args, **kw):
 
        # 调用父类的 __init__ 方法
        super(ToggleButtonExampleFrame, self).__init__(*args, **kw)
       
        #创建面板
        panel = wx.Panel(self, -1)
 
        #创建文本按钮
        toggleButton = wx.ToggleButton(panel, -1, "我是一个开关按钮", (100, 10),(200,45))
       
        # 绑定按钮事件
        self.Bind(wx.EVT_BUTTON, self.OnToggleButtonDown,toggleButton)
 
     
 
     #textButton事件处理方法 
     def OnToggleButtonDown(self,event):
          wx.MessageBox("您按下了TexButton")
 
  
 
 
def main():
    app = wx.App()
    frame = ToggleButtonExampleFrame(None, title='按钮控件')
    frame.Show(True)
    app.MainLoop()
 
if __name__ == '__main__':
    main()

案例代码执行效果图:

image.png

 


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论