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

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

img


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):
        """创建工具栏"""
        
        # 使用wxPython内置图标
        bmp_open = wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR, (16, 16))
        bmp_save = wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_TOOLBAR, (16, 16))
        
        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):

创建一个工具栏对象,并添加了“打开”和“保存”两个按钮。

主入口检查:

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

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

通过以上步骤,这个程序创建了一个具有基本功能的图形界面应用,其中包含一个可自由拖动的工具栏。

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

8

社区成员

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

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