===================================
内容概要:
1 说明
2 安装:Deepin-linux深度国产操作系统的安装
3 入门:Helloworld和窗口认识,注释详细
===================================
1 说明:
=====
1.1 wxPython是作为优秀的跨平台 GUI 库 wxWidgets 的 Python 封装和 Python 模块的方式提供给用户的。
1.2 wxPython 是 Python 语言的一套优秀的 GUI 图形库。
1.3 据说国外很流行的一个python的GUI库,比pyqt,pyside2简单,比python内置库tkinter强大。
2 安装:
=====
2.1 官网:
https://www.wxpython.org/2.2 最新版本
2.3 本机安装:有点小问题。
2.3.1 本机是deepin-linux操作系统
2.3.2 先安装依赖:
sudo apt-get install libgtk-3-dev build-essential checkinstall2.3.3 再安装:
pip install wxPython==4.1.1#下面是我的本机安装sudo pip3.8 install wxPython==4.1.1 #本机安装3 入门:
=====
3.1 最简单的代码:
#一切都是默认import wx #引入wx模块app = wx.App() #实例化一个主循环frame = wx.Frame(None) #实例化一个窗口frame.Show()#调用窗口展示功能app.MainLoop()#启动主循环3.2 helloworld代码
import wxapp = wx.App()#默认位置和大小#frame = wx.Frame(None, -1, "Hello, World!")#title窗口标题名,pos位置,size窗口的大小#frame = wx.Frame( None,-1,title="Hello, World!",pos=(100,100),size=(500,500))#parent = None #父元素,假如为None,代表顶级窗口#id = None #组件的标识,唯一,假如id为-1代表系统分配idframe = wx.Frame(None,title="Hello, World!",pos=(100,100),size=(500,500))#定义画板pnl = wx.Panel(frame)# 在上面放一个大号的静态文本,pos是坐标位置,默认左上角为0,0wx.StaticText(pnl, label="Hello World 你好 世界!",pos=(100,100))frame.Show(True)app.MainLoop()3.3 helloworld的代码(2)的图
4 豪华型Helloworld:
================
4.1 加入的内容:背景颜色设置,状态栏的显示,菜单设置,信息弹出框。
4.2 我用自己喜欢的方式,代码:
import wxapp = wx.App()frame = wx.Frame(None,title="Hello, World!",pos=(100,100),size=(500,500))# add1:背景颜色设置frame.SetBackgroundColour('pink')# add2:创建状态栏frame.CreateStatusBar()frame.SetStatusText("状态栏")# add3:菜单按钮功能def on_exit(event): """关闭框架,终止应用程序。""" frame.Close(True)def on_hello(event): """显示Hello对话框。""" wx.MessageBox("Hello World!")def on_about(event): """显示关于对话框""" wx.MessageBox("这是一个wxPython的演示Demo", "关于Hello World", wx.OK
wx.ICON_INFORMATION)# 使用 "Hello" 和 "退出" 项目创建 "文件" 菜单file_menu = wx.Menu()# 语法 "\t..." 定义了一个快捷键hello_item = file_menu.App(-1, "&Hello...\tCtrl-H", "此菜单项在状态栏中显示的帮助信息")file_menu.AppSeparator()# 使用 Stock ID 时,无需指定菜单项的标签exit_item = file_menu.App(wx.ID_EXIT)# 只有一个 "关于" 项目的 "帮助" 菜单help_menu = wx.Menu()about_item = help_menu.App(wx.ID_ABOUT)# 制作菜单栏,然后向其中添加两个菜单menu_bar = wx.MenuBar()menu_bar.App(file_menu, "&文件")menu_bar.App(help_menu, "&帮助")# 将菜单栏移至框架frame.SetMenuBar(menu_bar)# 将每个菜单项的处理函数与 EVT_MENU 事件关联frame.Bind(wx.EVT_MENU, on_hello, hello_item)frame.Bind(wx.EVT_MENU, on_exit, exit_item)frame.Bind(wx.EVT_MENU, on_about, about_item)#定义画板pnl = wx.Panel(frame)# 在上面放一个大号的静态文本,pos是坐标位置,默认左上角为0,0wx.StaticText(pnl, label="Hello World!",pos=(100,100))frame.Show(True)app.MainLoop()4.3 效果图:
4.4 正规高级代码格式:效果同上
import wxclass HelloWorld(wx.Frame): def __init__(self, *args, **kw): # 确保父类的 __init__ 被调用 super(HelloWorld, self).__init__(*args, **kw) # 在框架中创建一个面板 pnl = wx.Panel(self) # 在上面放一个大号的静态文本 st = wx.StaticText(pnl, label="Hello World!",pos=(100,100)) #高级字体设置 font = st.GetFont() font.PointSize += 10 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.SetBackgroundColour('pink') # 创建状态栏 self.CreateStatusBar() self.SetStatusText("状态栏") def make_menu_bar(self): # 使用 "Hello" 和 "退出" 项目创建 "文件" 菜单 file_menu = wx.Menu() # 语法 "\t..." 定义了一个快捷键 hello_item = file_menu.App(-1, "&Hello...\tCtrl-H", "此菜单项在状态栏中显示的帮助信息") file_menu.AppSeparator() # 使用 Stock ID 时,无需指定菜单项的标签 exit_item = file_menu.App(wx.ID_EXIT) # 只有一个 "关于" 项目的 "帮助" 菜单 help_menu = wx.Menu() about_item = help_menu.App(wx.ID_ABOUT) # 制作菜单栏,然后向其中添加两个菜单 menu_bar = wx.MenuBar() menu_bar.App(file_menu, "&文件") menu_bar.App(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): 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()===注释详细,讲解清楚,小白一秒入门===
祝:
三八妇女节快乐。