ToB企服应用市场:ToB评测及商务社交产业平台

标题: WxPython跨平台开发框架之图标选择界面 [打印本页]

作者: 瑞星    时间: 2024-12-31 11:40
标题: WxPython跨平台开发框架之图标选择界面
在使用 wxPython 开发跨平台桌面应用程序时,创建一个图标选择界面通常用于让用户从图标资源库中选择图标,我们可以把图标分为自定义的图标资源和系统的图标资源两大类,最终我们把它们整合一起使用,在框架的界面中使用,包罗工具栏、右键菜单、按钮、图片等所需的地方显示,实现图文并茂的友好界面展示。本篇随笔介绍这两种图标资源的管理和使用过程。
1、图标分类介绍

这里图标我们分为两类,一类是wxPython内置的图标资源,以wx.Art_开始。wx.ART_ 是 wxPython 提供的艺术资源(Art Resource)常量,用于在界面中快速访问通用的图标或位图资源。这些资源可以通过 wx.ArtProvider 获取,主要用于创建标准化的界面,比方工具栏、菜单和对话框中的图标。这类可以使用 wx.ArtProvider.GetBitmap 或 wx.ArtProvider.GetIcon 获取对应的位图或图标。
  1. bitmap = wx.ArtProvider.GetBitmap(wx.ART_INFORMATION, wx.ART_OTHER, (32, 32))
  2. icon = wx.ArtProvider.GetIcon(wx.ART_WARNING, wx.ART_OTHER, (16, 16))
复制代码
参数说明:
常用 wx.ART_ 图标列表

以下是一些常见的 wx.ART_ 常量及其用途:
常量名称描述示例用途wx.ART_INFORMATION信息图标(蓝色圆圈中的“i”)消息框或工具栏中的信息提示wx.ART_WARNING警告图标(黄色三角形)警告对话框wx.ART_ERROR错误图标(赤色圆圈中的“X”)错误提示框wx.ART_QUESTION问号图标确认对话框中的问题提示wx.ART_FILE_OPEN打开文件图标文件打开按钮或菜单项wx.ART_FILE_SAVE保存文件图标文件保存按钮或菜单项wx.ART_FILE_SAVE_AS另存为图标另存为操作wx.ART_DELETE删除图标删除按钮或菜单项wx.ART_COPY复制图标工具栏中的复制按钮wx.ART_CUT剪切图标工具栏中的剪切按钮wx.ART_PASTE粘贴图标工具栏中的粘贴按钮wx.ART_UNDO取消图标取消操作按钮wx.ART_REDO重做图标重做操作按钮wx.ART_FIND查找图标查找工具栏或菜单项wx.ART_HELP帮助图标(问号)帮助按钮或菜单项wx.ART_NEW新建文件图标新建按钮或菜单项wx.ART_TIP提示图标工具提示或信息提示框wx.ART_ADD_BOOKMARK添加书签图标书签管理工具wx.ART_DEL_BOOKMARK删除书签图标书签管理工具wx.ART_GO_BACK返回图标欣赏器中的后退按钮wx.ART_GO_FORWARD前进图标欣赏器中的前进按钮wx.ART_GO_UP向上导航图标文件管理器中的向上导航wx.ART_GO_DOWN向下导航图标文件管理器中的向下导航wx.ART_EXECUTABLE_FILE可执行文件图标显示可执行文件范例wx.ART_NORMAL_FILE普通文件图标显示普通文件范例wx.ART_FOLDER文件夹图标显示文件夹范例wx.ART_FOLDER_OPEN打开文件夹图标文件夹展开时显示wx.ART_PRINT打印图标打印操作按钮或菜单项wx.ART_REPORT_VIEW报表视图图标改变视图样式的按钮wx.ART_LIST_VIEW列表视图图标改变视图样式的按钮通过使用 wx.ART_,可以明显提高界面的同等性和开发效率!
别的一类是我们自己自定义的图标资源,为了方便整合使用,我们往往把它作为嵌入资源的方式,放在一个文件里面,如下所示。

 必要的时候,直接导入这个core_image进利用用即可。
  1. import core.core_images as images
  2. img: wx.Image = (
  3.     images.catalog[name].Image if name in images.catalog else result
  4. )
  5. img = img.Scale(icon_size, icon_size, wx.IMAGE_QUALITY_HIGH)
  6. result = wx.Bitmap(img)
复制代码
为了方便添加,我们可以使用wxpython的内置工具类img2py来天生代码到指定.py文件中。
  1. from wx.tools import img2py
复制代码
然后可以通过下令行来天生代码到python类文件中。
  1. "-a -F -n TestStar2 bmp_source/teststar.png images.py"
复制代码
必要详细了解各个参数的意思,可以检察 img2py.py 例子代码的说明即可。
我为了方便,参考修改编写了一个独立的工具类来方便天生所需的代码。
我可以再文件目录中选择所需的文件,然后右键复制文件地址,把它们路径复制出来。

 

 
2、图标的选择界面及使用

前面介绍了两种差别的图标资源库,我们应该再框架系统中能够顺利使用它们,以便为我们的工具栏、菜单、按钮等地方添加风趣而有意义的图标,比单纯的文本会好看许多。
如列表界面中的工具栏、按钮都采用了和内容同等的图标,比较美观一些。

 偶然候,我们右键菜单也可以根据图表库选择同等意义的图标。
表格显示的右键菜单

大概树形列表的右键菜单

 因此我们在系统中统一展示和选择图标操作,如下所示,包罗自定义图标,也包罗内置图标。


自定义图标可以根据必要进行添加到内置资源的类即可,图标来源许多,网上也有许多,可以参考一下下面的这个网址获取一些:https://www.iconarchive.com/
 
 在里面搜索关键字下载自己所需图标即可。
为了统一通过名称获取图标信息,我们可以编写一个通用的处理图标的函数来处理,如下函数。
  1. def get_bitmap(name: str, icon_size: int = 32) -> wx.Bitmap:
  2.     """获取位图,可以根据images里面的内容,或者是内置的wx.ART_XXX"""
  3.     result = wx.ArtProvider.GetBitmap(
  4.         wx.ART_FOLDER, wx.ART_OTHER, (icon_size, icon_size)
  5.     )
  6.     try:
  7.         if name is None or name == "":
  8.             return result
  9.         if name.startswith("wx.ART_"):
  10.             result = wx.ArtProvider.GetBitmap(
  11.                 eval(name), wx.ART_OTHER, (icon_size, icon_size)
  12.             )
  13.         else:
  14.             img: wx.Image = (
  15.                 images.catalog[name].Image if name in images.catalog else result
  16.             )
  17.             img = img.Scale(icon_size, icon_size, wx.IMAGE_QUALITY_HIGH)
  18.             result = wx.Bitmap(img)
  19.     except Exception as e:
  20.         print(f"get_bitmap 调用错误: {e},没有找到{name}的图片")
  21.     return result
复制代码
如许我们在创建按钮、菜单的时候,使用这个天生图标位图的辅助函数即可通用了。
  1.         button = wx.Button(parent, id, btn_name)
  2.         button.Enable(enable)
  3.         if icon_name:
  4.             button.SetBitmap(<strong>get_bitmap</strong>(icon_name, icon_size))
  5.             button.SetBitmapPosition(wx.LEFT)  # 可以设置 LEFT, RIGHT, TOP, BOTTOM
复制代码

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4