- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
在很多程序中,封装常用消息对话框有很多好处,尤其是在 GUI 应用程序中,本篇随笔结合.net 开发Winform界面的经验,对使用wxpython开发中 wx.MessageDialog 和 wx.lib.agw.genericmessagedialog.GenericMessageDialog 两种不同消息对话框的处理,对其进行简单封装,以适应程序开发的需要.
对常用消息对话框的封装处理,具有以下是一些主要的优点:
封装消息对话框可以避免重复代码。你可以定义一个统一的函数或类来处理所有消息对话框,从而在多个地方复用这段代码.
通过封装,你可以确保所有消息对话框的外观和行为一致。这有助于提高用户体验,使用户在应用程序中获得统一的交互方式.
封装可以简化调用过程。你可以将常用的参数设置(如标题、图标、按钮类型等)预先定义好,从而在调用时减少参数输入.
当需要更改对话框的行为或样式时,只需在封装函数中进行修改,而不必在应用程序中的每个调用点进行更改。这使得维护变得更加简单和高效.
通过使用封装的函数或类,代码变得更易读。其他开发者可以一眼看出对话框的作用,而不必深入了解其具体实现.
封装有助于集中管理对话框的逻辑,比如处理用户输入、响应用户选择等。这样可以更方便地进行逻辑更新或错误处理.
如果将来需要增加新的对话框或修改现有对话框的逻辑,封装使得扩展更加容易。你可以在封装的基础上进行扩展,而不影响现有的代码结构.
。
我在早期开发Winform的时候,对消息对话框进行了一些简单的封装,在随笔《厚积薄发,丰富的公用类库积累,助你高效进行系统开发(2)----常用操作 》中有介绍.
封装的消息提示对话框包括个各种常用的对话框,如下所示:
。
为了方便,我们先写一个页面来测试相关消息对话框的封装处理,如下界面所示.
wxpython开发中 wx.MessageDialog 和 wx.lib.agw.genericmessagedialog.GenericMessageDialog 都时跨平台支持的,GenericMessageDialog 是 wxPython 的一个扩展库,提供了一个通用的消息对话框类,用于在不同平台上显示消息框。这个类是跨平台的,支持以下主要平台:
GenericMessageDialog
会使用系统样式来渲染对话框。MessageDialog 和 GenericMessageDialog 旨在提供一致的用户体验,无论在哪个平台上运行.
如果你的需求简单,只需显示消息并获取用户确认,使用 wx.MessageDialog 是更简单的选择。 如果你需要更多的自定义功能或希望在多个平台上保持一致的外观,可以考虑使用 GenericMessageDialog.
消息对话框的常用代码如下所示.
def ShowMessageDialog(self): # 创建消息对话框 dlg = wx.MessageDialog(self, "This is a message dialog example.\nWould you like to proceed?", "Confirmation", wx.YES_NO | wx.CANCEL | wx.ICON_QUESTION) # 显示对话框并处理用户选择 result = dlg.ShowModal() if result == wx.ID_YES: wx.MessageBox("You clicked Yes!", "Info") elif result == wx.ID_NO: wx.MessageBox("You clicked No!", "Info") elif result == wx.ID_CANCEL: wx.MessageBox("You clicked Cancel!", "Info") dlg.Destroy() # 销毁对话框
以及 。
def on_show_dialog(self, event): # 创建 GenericMessageDialog dlg = GMD.GenericMessageDialog(self, "This is a message.", "Message Title", style=wx.OK | wx.CANCEL) # 设置图标(可选) dlg.SetYesNoCancelBitmaps(wx.ArtProvider.GetBitmap(wx.ART_INFORMATION, wx.ART_MESSAGE_BOX)) # 显示对话框 result = dlg.ShowModal() if result == wx.ID_OK: print("OK button clicked") elif result == wx.ID_CANCEL: print("Cancel button clicked") dlg.Destroy()
如果每次这样调用,我们需要了解很多相关的参数信息,一般我们只需要传入一些简单的信息提示即可,因此需要对它们进行简单的封装.
我们定义一个类,提供最原始简单的显示消息的处理函数,然后再在基础上进行特殊的简化封装即可.
class MessageUtil: """ 封装了常用的消息对话框,以方便使用常用对话框消息。 包括提示信息、警告信息、错误信息、确认信息、询问信息、输入信息、 选择信息、多选信息、文件选择信息、目录选择信息、字体选择信息、颜色选择信息、进度条信息等。 """ @staticmethod def show_message(parent, message, caption, style): """显示消息对话框-使用GenericMessageDialog实现""" dlg = GMD.GenericMessageDialog(parent, message, caption, style) dlg.SetIcon(images.appIcon.GetIcon()) # 设置窗口图标 result = dlg.ShowModal() dlg.Destroy() return result @staticmethod def show_message2(parent, message, caption, style): """显示消息对话框-使用wx.MessageDialog 实现""" dlg = wx.MessageDialog(parent, message, caption, style) result = dlg.ShowModal() dlg.Destroy() return result
其中 show_message 和show_message2 是针对两者不同消息类的封装,我们可以根据实际需要替换来用即可。如对于常规的提示消息、告警、错误消息框,简单设置一下参数即可.
# 常用消息对话框的标题 CAPTION_TIPS = "提示信息" CAPTION_WARNING = "警告信息" CAPTION_ERROR = "错误信息" CAPTION_CONFIRM = "确认信息" @staticmethod def show_tips(parent, message, caption=CAPTION_TIPS): """显示一般的提示信息""" return MessageUtil.show_message( parent, message, caption, wx.OK | wx.ICON_INFORMATION ) @staticmethod def show_warning(parent, message, caption=CAPTION_WARNING): """显示警告信息""" return MessageUtil.show_message( parent, message, caption, wx.OK | wx.ICON_WARNING ) @staticmethod def show_error(parent, message, caption=CAPTION_ERROR): """显示错误信息""" return MessageUtil.show_message(parent, message, caption, wx.OK | wx.ICON_ERROR)
而对于提供更多按钮的,也是设置参数即可,如下所述.
@staticmethod def show_yes_no_tips(parent, message, caption=CAPTION_TIPS): """显示询问用户信息,并显示提示标志""" return MessageUtil.show_message( parent, message, caption, wx.YES_NO | wx.ICON_INFORMATION ) @staticmethod def show_yes_no_warning(parent, message, caption=CAPTION_WARNING): """显示询问用户信息,并显示警告标志""" return MessageUtil.show_message( parent, message, caption, wx.YES_NO | wx.ICON_WARNING ) @staticmethod def show_yes_no_error(parent, message, caption=CAPTION_ERROR): """显示询问用户信息,并显示错误标志""" return MessageUtil.show_message( parent, message, caption, wx.YES_NO | wx.ICON_ERROR )
另外,wxpython还提供了TextEntryDialog、SingleChoiceDialog、MultiChoiceDialog等对话框,我们也可以简单封装一下使用.
@staticmethod def show_input_dialog(parent, message, caption, default_value): """显示输入对话框""" dlg = wx.TextEntryDialog(parent, message, caption, default_value) result = dlg.ShowModal() if result == wx.ID_OK: return dlg.GetValue() else: return None @staticmethod def show_choice_dialog(parent, message, caption, choices): """显示选择对话框""" dlg = wx.SingleChoiceDialog(parent, message, caption, choices) result = dlg.ShowModal() if result == wx.ID_OK: return dlg.GetStringSelection() else: return None @staticmethod def show_multi_choice_dialog(parent, message, caption, choices): """显示多选对话框""" dlg = wx.MultiChoiceDialog(parent, message, caption, choices) result = dlg.ShowModal() if result == wx.ID_OK: return dlg.GetSelections() else: return None
最后如下效果所示.
这样我们在程序里面统一调用就会有相同的效果,而且简化了很多不必要的参数.
MessageUtil.show_tips(None, "This is a test program.", "关于")
以上就是一些日常开发的函数处理和抽象处理,主要就是为了简化实际开发的时候的一些复杂度,并提供统一的界面效果.
。
最后此篇关于使用wxpython开发跨平台桌面应用,对常用消息对话框的封装处理的文章就讲到这里了,如果你想了解更多关于使用wxpython开发跨平台桌面应用,对常用消息对话框的封装处理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
本文主要给大家介绍Mysql数据库分库和分表方式(常用),涉及到mysql数据库相关知识,对mysql数据库分库分表相关知识感兴趣的朋友一起学习吧 1 分库 1.1 按照功能分库 按照功能进行
在当前对象由其他包含对象操作的系统中,当传递对当前对象的引用时,链接似乎一直在继续......没有任何结束(对于下面的代码,Car ->myCurrentComponent->myCar_Brake-
我有一个密码 UIAlertView,我们要求用户提供。我需要根据情况在不同的 View 上询问它,从 downloadViewController (用户下载数据后),当他们切换到他们的数据时(如果
我正在尝试编写一个函数,使得对于任何整数 x 的 P(x) 都有一个包含三个元素的列表,即平方、立方和 n 的四次方,但我仍然不知道如何组合然后制作一个函数,例如我有平方、立方体和 4 次幂函数下面是
关闭。这个问题需要更多 focused .它目前不接受答案。 关闭4年前。 锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。 我能否列出一份常见的
Python 常用 PEP8 编码规范 代码布局 缩进 每级缩进用4个空格。 括号中使用垂直隐式缩进或使用悬挂缩进。 EXAMPLE: ?
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 去年关闭。 Improve this questio
在经典 ui 中,您可以使用 xtype:cqinclude 包含来自不同路径的 rtePlugins,基本上为标准 RTE 插件创建一个位置,我如何在 Touch UI 中执行相同操作? 我尝试使用
在经典 ui 中,您可以使用 xtype:cqinclude 包含来自不同路径的 rtePlugins,基本上为标准 RTE 插件创建一个位置,我如何在 Touch UI 中执行相同操作? 我尝试使用
*strong text*我有多个网络应用程序使用了一些常见的依赖项,比如蒙戈连接器谷歌 Guava 乔达时间 我想到将它们从 webapp/WEB-INF/lib 中取出并放入一些 common-l
我正在编写一个 Web 服务器,我想知道哪些 HTTP 请求 header (由客户端发送)是最常见的,因此我应该重点实现。 目前,我只支持Accept 和Host。 最佳答案 不确定您的范围,但由于
我是一名优秀的程序员,十分优秀!