侧边栏壁纸
博主头像
进一步,海阔天空 博主等级

进一步,海阔天空

  • 累计撰写 166 篇文章
  • 累计创建 19 个标签
  • 累计收到 7 条评论

目 录CONTENT

文章目录

wxPython桌面应用开发系列[2]-添加简单的button和响应事件

Kevin Meng
2023-04-18 / 0 评论 / 0 点赞 / 29 阅读 / 0 字

这一章,我们简单加一个Panel,并在Panel中添加一个按钮和响应按钮的事件。

Panel和Frame的说明

Frame可以理解为窗口,而Panel可以理解为窗口上的一个面板,这个面板里面还可以放置button、label等其他界面元素。

MainPanel类

新建一个MainPanel类,代码如下,代码很简单,就是定义一个Panel,并在Panel中添加一个按钮。

import wx

class MainPanel(wx.Panel):

    def __init__(self, parent):
        super().__init__(parent)

        button = wx.Button(self, label='快速转换')

使用MainPanel

使用MainPanel类,这样一个按钮就显示出来了。

import wx
from MainPanel import MainPanel

class MainFrame(wx.Frame):

    def __init__(self):
        super().__init__(None, title='飞图坐标转换工具')
        panel = MainPanel(self)

if __name__ == '__main__':
    app = wx.App()
    frame = MainFrame()
    frame.Show()
    app.MainLoop()

运行后的效果

接着,我们给按钮添加相应事件。

import wx

class MainPanel(wx.Panel):

    def __init__(self, parent):
        super().__init__(parent)

        button = wx.Button(self, label='快速转换')
        button.Bind(wx.EVT_BUTTON, self.on_button_press)

    def on_button_press(self, event):
        print("点击了快速转换按钮")

这时候点击快速转换按钮,就可以在控制台中打印出提示信息了。这里我们是直接给button添加响应事件,也就是说只有button会捕捉这个点击事件,其它界面元素是不响应的,如果我们想像浏览器中的效果一样,把事件向上传递怎么呢?代码改一下,加入event.Skip()即可:

import wx

class MainPanel(wx.Panel):

    def __init__(self, parent):
        super().__init__(parent)

        button = wx.Button(self, label='快速转换')
        self.Bind(wx.EVT_BUTTON, self.panel_button_handler, button)
        button.Bind(wx.EVT_BUTTON, self.on_button_press)

    def panel_button_handler(self, event):
        print('panel_button_handler called')

    def on_button_press(self, event):
        print("点击了快速转换按钮")
        event.Skip()
0

评论区