栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

wxpython是什么(wxpython界面美化)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

wxpython是什么(wxpython界面美化)

wxPython的使用

安装wxPython创建最简单的窗口封装自定义框架(窗口)

添加面板添加控件创建调整器添加菜单栏和状态栏 并 绑定事件 整体代码

这是我从0开始学习wxPython时边学边写的笔记,主要是对于wxPython的初步认识。

下面讲的是官方文档中的第一个案例,参考的是这位大佬的文章:
https://blog.csdn.net/hekaiyou/article/details/107360100

安装wxPython

通过pip命令来安装:

pip install wxPython

创建最简单的窗口
import wx

# 创建一个应用程序对象
app = wx.App()      
# 创建一个框架,框架就是一个窗口,其大小和位置(通常)可以由用户更改。
frm = wx.frame(None,title="Hello World")	# 用title指定窗口名
# 展示框架(窗口)
frm.Show()
# 启动事件循环,将程序暂停在此处,而不会因代码执行完毕而停止
app.MainLoop()

wx.App() 的作用是:

引导 wxPython 系统并初始化底层 GUI 工具包设置和获取应用程序范围的属性实现原生窗口系统主消息或事件循环,并将事件分发给窗口实例

每个 wx 应用程序都必须有一个单独的 wx.App 实例,并且所有 UI 对象的创建都应该在创建 wx.App 对象之后,以确保 GUI 平台和 wxWidgets 具有已完全初始化。

wx.frame的详细参数见此处:https://my.oschina.net/mutour/blog/33063?fromerr=rlll4KZ8

封装自定义框架(窗口) 添加面板

面板是用来存放控件的,如:按钮、文本框等。

import wx

class HelloWorld(wx.frame):
    """
    自定义的HelloWorld框架
    """
    def __init__(self, *args, **kw):
        # 调用父类的 __init__ 方法
        super().__init__(*args, **kw)
        # 在框架中创建一个面板
        pnl = wx.Panel(self)

if __name__ == '__main__':
    app = wx.App()
    # 调用自定义框架
    frm = HelloWorld(None, title='Hello World')
    frm.Show()
    app.MainLoop()

效果如图:

添加控件
    def __init__(self, *args, **kw):
        # 调用父类的 __init__ 方法
        super().__init__(*args, **kw)
        # 在框架中创建一个面板
        pnl = wx.Panel(self)
        # 在面板上放一个静态文本
        st = wx.StaticText(pnl, label="Hello World")   # StaticText()用于显示一行或多行只读文本,并作为一个控件返回
        font = st.GetFont()     # 获取控件字体
        font.PointSize += 10    # 字体增加10, 默认为9
        font = font.Bold()      # 字体加粗,接收返回值
        st.SetFont(font)        # 设置控件字体,否则将不会生效

wxpython之StaticText最全介绍参考此处https://blog.csdn.net/qq_41639829/article/details/106075448

创建调整器

调整器(sizer)可用来管理控件的布局,sizer可以进行嵌套,如同HTML中的标签。

    def __init__(self, *args, **kw):
        …… ……
        # 创建一个调整器(sizer)来管理控件的布局
        sizer = wx.BoxSizer(wx.VERTICAL)	# 参数用来指定sizer中子控件的排列方向,(垂直方向)wx.VERTICAL 或(水平方向) wx.HORIZONTAL
        sizer.Add(st, wx.SizerFlags().Border(wx.TOP | wx.LEFT, 25))	# 将静态文本控件加入sizer并设置布局
        pnl.SetSizer(sizer)		# 将sizer加入面板


关于wx.BoxSizer() 的详细使用参见https://blog.csdn.net/igolang/article/details/9397175

添加菜单栏和状态栏 并 绑定事件
    def __init__(self, *args, **kw):
        …… ……
        # 创建菜单栏
        self.make_menu_bar()
        # 创建状态栏
        self.CreateStatusBar()      # 在框架底部创建一个状态栏。
        self.SetStatusText("状态栏")    # 设置状态栏文本并更新状态栏显示。

	def make_menu_bar(self):
        """
        菜单栏由菜单组成,菜单由 菜单项 组成。
        此方法将构建一组菜单,并绑定选择菜单项时要调用的处理函数。
        """
        # 制作菜单
        # 1、添加包含 "Hello" 和 "退出" 项目(菜单项)的 "文件" 菜单
        file_menu = wx.Menu()
        # 使用语法 "t..." 定义一个快捷键
        hello_item = file_menu.Append(-1, "&HellotCtrl-H", "此菜单项在状态栏中显示的帮助信息")
        file_menu.AppendSeparator()     	# 在菜单末尾添加分隔符。
        # 可以使用 Stock ID 快速创建菜单项,并且无需指定菜单项的标签名
        # Stock ID: https://docs.wxpython.org/stock_items.html
        exit_item = file_menu.Append(wx.ID_EXIT)
        # 2、添加只有一个 "关于" 项目 的 "帮助" 菜单
        help_menu = wx.Menu()
        about_item = help_menu.Append(wx.ID_about)

        # 制作菜单栏,然后向其中添加两个菜单
        menu_bar = wx.MenuBar()
        menu_bar.Append(file_menu, "&文件")
        menu_bar.Append(help_menu, "&帮助")
        # 将菜单栏移至框架
        self.SetMenuBar(menu_bar)

        # 将每个菜单项的处理函数与 EVT_MENU 事件关联
        self.Bind(wx.EVT_MENU, self.on_hello, hello_item)
        self.Bind(wx.EVT_MENU, self.on_exit, exit_item)
        self.Bind(wx.EVT_MENU, self.on_about, about_item)

    def on_exit(self, event):
        """关闭框架,终止应用程序。"""
        self.Close(True)

    def on_hello(self, event):
        """显示Hello对话框。"""
        wx.MessageBox("Hello World!")

    def on_about(self, event):
        """显示关于对话框"""
        wx.MessageBox("这是一个wxPython的演示Demo", "关于Hello World", wx.OK | wx.ICON_INFORMATION)


整体代码
import wx

class HelloWorld(wx.frame):
    """
    自定义的HelloWorld框架
    """
    def __init__(self, *args, **kw):
        # 调用父类的 __init__ 方法
        super().__init__(*args, **kw)
        # 在框架中创建一个面板
        pnl = wx.Panel(self)
        # 在面板上放一个静态文本
        st = wx.StaticText(pnl, label="Hello World")   # 用于显示一行或多行只读文本,并作为一个控件返回
        font = st.GetFont()     # 获取控件字体
        font.PointSize += 10    # 字体增加10, 默认为9
        font = font.Bold()      # 设置字体为加粗
        st.SetFont(font)        # 设置控件字体,否则将不会生效
        # 创建一个调整器来管理控件的布局
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(st, wx.SizerFlags().Border(wx.TOP | wx.LEFT, 25))
        pnl.SetSizer(sizer)
        # 创建菜单栏
        self.make_menu_bar()
        # 创建状态栏
        self.CreateStatusBar()      # 在框架底部创建一个状态栏。
        self.SetStatusText("状态栏")    # 设置状态栏文本并更新状态栏显示。

    def make_menu_bar(self):
        """
        菜单栏由菜单组成,菜单由 菜单项 组成。此方法将构建一组菜单,并绑定选择菜单项时要调用的处理函数。
        """
        # 制作菜单
        # 1、使用 "Hello" 和 "退出" 项目(菜单项)创建 "文件" 菜单
        file_menu = wx.Menu()
        # 使用语法 "t..." 定义一个快捷键
        hello_item = file_menu.Append(-1, "&HellotCtrl-H", "此菜单项在状态栏中显示的帮助信息")
        file_menu.AppendSeparator()     # 在菜单末尾添加分隔符。
        # 可以使用 Stock ID 快速创建菜单项,并且无需指定菜单项的标签名
        # Stock ID: https://docs.wxpython.org/stock_items.html
        exit_item = file_menu.Append(wx.ID_EXIT)
        # 2、添加只有一个 "关于" 项目的 "帮助" 菜单
        help_menu = wx.Menu()
        about_item = help_menu.Append(wx.ID_about)

        # 制作菜单栏,然后向其中添加两个菜单
        menu_bar = wx.MenuBar()
        menu_bar.Append(file_menu, "&文件")
        menu_bar.Append(help_menu, "&帮助")
        # 将菜单栏移至框架
        self.SetMenuBar(menu_bar)

        # 将每个菜单项的处理函数与 EVT_MENU 事件关联
        self.Bind(wx.EVT_MENU, self.on_hello, hello_item)
        self.Bind(wx.EVT_MENU, self.on_exit, exit_item)
        self.Bind(wx.EVT_MENU, self.on_about, about_item)

    def on_exit(self, event):
        """关闭框架,终止应用程序。"""
        self.Close(True)

    def on_hello(self, event):
        """显示Hello对话框。"""
        wx.MessageBox("Hello World!")

    def on_about(self, event):
        """显示关于对话框"""
        wx.MessageBox("这是一个wxPython的演示Demo", "关于Hello World", wx.OK | wx.ICON_INFORMATION)



if __name__ == '__main__':
    app = wx.App()
    frm = HelloWorld(None, title='Hello World')
    frm.Show()
    app.MainLoop()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号