wxpython的子模块wx.lib.agw.aui简化版可拖动有抓取柄使用自定义图标的工具栏示例代码

传奇开心果编程
Python领域优质创作者
2024-09-26 10:43:48

img

使用说明:

工具栏图标和路径要替换成自己的。例如:'res/open_mso.png'。


import wx
import wx.lib.agw.aui as aui

class SimpleToolbarFrame(wx.Frame):
    """创建一个包含可拖动工具栏的主窗口类"""
    
    def __init__(self, parent):
        super().__init__(parent, title='可拖动工具栏示例', size=(640, 480))
        
        self.SetBackgroundColour((224, 224, 224))
        
        self._init_ui()
        self.Center()
    
    def _init_ui(self):
        """初始化用户界面"""
        
        toolbar = self._create_toolbar()
        
        self._mgr = aui.AuiManager()
        self._mgr.SetManagedWindow(self)
        
        # 将工具栏添加到AUI管理器中,并允许浮动(即拖动)
        self._mgr.AddPane(toolbar, 
            aui.AuiPaneInfo().Name('ToolBar').Caption('工具条').ToolbarPane().Top().Row(0).Position(0).Floatable(True)
        )
        
        self._mgr.Update()
    
    def _create_toolbar(self):
        """创建工具栏"""
        
        bmp_open = wx.Bitmap('res/open_mso.png', wx.BITMAP_TYPE_ANY)
        bmp_save = wx.Bitmap('res/save_mso.png', wx.BITMAP_TYPE_ANY)
        
        tb = aui.AuiToolBar(self, -1, wx.DefaultPosition, wx.DefaultSize, agwStyle=aui.AUI_TB_TEXT)
        tb.SetToolBitmapSize(wx.Size(16, 16))
        
        tb.AddSimpleTool(wx.ID_OPEN, '打开', bmp_open, '打开文件')
        tb.AddSimpleTool(wx.ID_SAVE, '保存', bmp_save, '保存文件')
        tb.AddSeparator()
        
        tb.Realize()
        return tb

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

代码概括解释

这段代码定义了一个基于 wxPython 的应用程序,它创建了一个包含可拖动工具栏的主窗口。以下是代码的主要组成部分:

导入必要的模块:

import wx
import wx.lib.agw.aui as aui

导入了 wxPython 库以及 aui 模块,用于实现可拖动的工具栏。

定义窗口类 SimpleToolbarFrame:

class SimpleToolbarFrame(wx.Frame):

继承自 wx.Frame,用于创建一个带有工具栏的窗口。

初始化方法 _init_ui:

def _init_ui(self):

初始化用户界面,包括创建工具栏并将其添加到 AUI 管理器中,使其可以被拖动。

创建工具栏的方法 _create_toolbar:

def _create_toolbar(self):

创建一个工具栏对象,并添加了“打开”和“保存”两个按钮。这里使用了自定义图标文件 open_mso.png 和 save_mso.png。

主入口检查:

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

检查是否直接运行此脚本,并启动应用程序的主循环。

具体步骤如下:

窗口初始化:

创建一个窗口实例 SimpleToolbarFrame。
设置窗口标题为“可拖动工具栏示例”,大小为 640x480 像素。
设置背景颜色为浅灰色 (224, 224, 224)。
调用 _init_ui 方法初始化用户界面。
初始化用户界面:

调用 _create_toolbar 方法创建工具栏。
创建 AUI 管理器实例,并设置其管理的窗口为当前窗口。
将工具栏添加到 AUI 管理器中,并允许浮动(即拖动)。
创建工具栏:

加载自定义图标文件 open_mso.png 和 save_mso.png。
创建工具栏对象,并设置工具图标大小为 16x16 像素。
添加“打开”和“保存”两个按钮,并添加一个分隔符。
调用 Realize 方法使工具栏生效。
启动应用程序:

创建 wx.App 实例。
创建 SimpleToolbarFrame 实例,并显示窗口。
启动应用程序的主循环。
通过以上步骤,这个程序创建了一个具有基本功能的图形界面应用,其中包含一个可自由拖动的工具栏。

...全文
109 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
源代码IDE运行和调试通过

8

社区成员

发帖
与我相关
我的任务
社区描述
软件开发那些事
软件工程需求分析团队开发 个人社区 甘肃省·酒泉市
社区管理员
  • 传奇开心果编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧