Python如何开发桌面软件 |
您所在的位置:网站首页 › python怎么做游戏界面 › Python如何开发桌面软件 |
Python可快速写脚本、可用于运维、可用于后台开发、可写爬虫、可处理图片视频、可游戏开发、可用于大数据计算、可机器学习、可做硬件开发等等等。 那怎么能少了桌面软件开发,也就是GUI。 1、GUI框架的选择Python用于桌面开发的界面库有不少:Kivy、PyQt、gui2Py、libavg、wxPython... 试验一下,wxPython我用起来比较舒服,而且wxPython的帮助文档和Demo比较详细(不用问是不是英文的,肯定是)。 目前wxPython尚未支持py3,使用py3的童靴可以试试PyQt4或PyQt5。 2、下载和安装wxPython打开,在他们的官网下载对应版本的。下载完成后直接安装即可。 不知道自己的Python版本?如下代码可以查看: import sysprint(sys.version)这里也建议下载它的demo和docs。有利于我们学习wxPython。 下载demo,打开其中的demo.py文件。 还可以下载samples看看它的一些例子。 wxPython各种文档都比较齐全。遇到不会的可以查看demo和帮助文档。用的人也不少,很多问题都可以搜索出来。(不要问搜索不到,如果你是用某度的话。推荐用雅虎或谷歌,或者在Stack Overflow上搜索) 可以参考如下文章: 简单入门: 控件使用: 这里有个地方需要注意一下,关于wxPython的app。 wx.PySimpleApp()已经过时了(打包发布会出错),建议使用自定义的wx.App类。 3、可视化编辑器如果纯粹自己手写代码写界面,效率低下,调试麻烦而且界面简陋。 有个利器可以帮助我们快速开发界面:wxFormBuilder。 打开, 下载wxFormBuilder最新的安装包,下载完成后直接安装即可。 打开wxFormBuilder可以看到一个英文界面,该界面比较简单。下面是我最近的项目创建的界面。 左边是结构树,右边是属性窗口,中间是设计界面,上面是组件。 重点是组件部分。一般先点Forms创建空白窗口。然后再点Layout布局,添加布局。 添加布局之后,才能在Common公共控件中添加控件。 这个使用也比较简单,工具栏还可以快速设置控件的布局。 可参考如下文章: http://yuyongid.blog.51cto.com/10626891/1717514 4、添加业务逻辑代码我们前面用wxFormBuilder写的是界面代码。还需要写具体的业务逻辑代码。 我一般将这里两个分离。 wxFormBuilder设计完成之后,有Python代码: 直接复制全部代码,在某个文件夹中新建forms.py文件,粘贴代码。 或者打开该wxFormBuilder项目所在的位置,找到Python文件。将其改个名字就可以用。 接着,在该文件夹创建一个程序入口文件main.py。代码如下: #coding:utf-8import wxfrom forms import frame_main class App(wx.App): def OnInit(self): self.frame = frame_main(None) self.frame.Show() self.SetTopWindow(self.frame) return True if __name__ == '__main__': app = App() app.MainLoop()引用刚才写的界面代码,并显示。可以先执行测试看能否正常打开。 可以正常打开之后,在该文件夹下创建events.py文件,该文件我用于写事件和绑定事件的相关代码。例如代码如下: #coding:utf-8import wx #主窗体事件class frame_main_events(): def __init__(self, frame): self.frame = frame #设置图标 self.frame.SetIcon(wx.Icon(u'converter.ico', wx.BITMAP_TYPE_ICO)) #绑定按钮点击代码 self.frame.btn_run.Bind(wx.EVT_BUTTON, self.btn_run_OnButtonClick) #窗体关闭事件 self.frame.Bind(wx.EVT_CLOSE, self.frame_main_OnClose) def frame_main_OnClose(self, event): """窗体关闭""" #关闭提示 dlg = wx.MessageBox(message=u'Do you want to close?', caption=u'tip', style=wx.YES_NO|wx.NO_DEFAULT) if dlg == wx.YES: frame = event.GetEventObject() frame.Destroy() event.Skip() def btn_run_OnButtonClick(self, event): """执行按钮""" #弹窗测试 wx.MessageBox(message=u'text', caption=u'caption') event.Skip()再修改main.py文件的代码: #coding:utf-8import wxfrom forms import frame_mainfrom events import frame_main_events class App(wx.App): def OnInit(self): #加载窗体 self.frame = frame_main(None) #绑定事件 self.events = frame_main_events(self.frame) self.frame.Show() self.SetTopWindow(self.frame) return True if __name__ == '__main__': app = App() app.MainLoop()即可实现刚刚写的代码,绑定窗体关闭事件和下面的按钮的点击事件。 至于怎么绑定事件,可以参考wxFormBuilder属性窗口的事件(Events)选卡。 双击对应的事件,会自动添加一个空事件和绑定事件的代码。你把事件代码写在里面也可以,就是不方便维护。 最后,注意每个事件末尾都要加event.Skip()。该句代码在一个事件绑定多个方法会有作用。而且不加的话,可能会引发一些问题。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |