文章目录

  • wxpython安装
  • wxformbuilder安装
  • wxpython的使用
    • frame
    • window
    • sizer
    • event
  • wxformbuilder使用的一点建议
  • cxfreeze的一点使用技巧

wxpython安装

Wx Python的安装根据自己的系统就可以直接安装,跟平时使用的库是一样的。没什么好说的。

wxformbuilder安装

在下面网址的files页面,选择自己的系统和python对应版本就可以下载了。
wxformbuilder下载
这个东西的安装和一般的app安装是一样的。

wxpython的使用

真的很简单,和qt一样简单,我其实是先学了qt,再学这个的,当然我也知道qt有python版的,但是我没用的原因是,据说qt比wxpython的性能差,因为我的需求,所以放弃了qt。再来学学wx。想到自己一直没有过写博客的经历,第一次写,想让自己做一些输出,巩固学到的东西。
首先,需要了解wx的下面几个类。

  • frame
  • windows
  • sizer
  • event
    这几个东西搞懂了,基本就成型了。

frame

wx的逻辑除了信号和槽这两方面和qt有区别,其他方面几乎一摸一样,特别是逻辑上。wx的逻辑是,建立一个窗口应用程序,并以事件的方式,一直循环监控窗口,在程序中,写frame。所谓架构,其实就是一个主窗口,一个主程序需要一个主窗口

#创建主应用程序
App = wx.App()
#向程序中添加框架,参数是指指定父窗口,参数id,-1指默认id,和窗口标题
frameT = wx.Frame(None,-1,name=‘窗口标题’)
#然后让窗口显示
frameT.Show()
#最后主程序循环监控事件
App.MainLoop()

如此简单,一个主窗口框架就建立好了。

window

所谓窗口,就是一系列控件,像按钮,标签,文本框等等,都是window的子类,这些窗口只要指定父窗口,就可以放置在其中

#创建一个按钮,放在主窗口中,并设置其现实的文本
btn = wx.Button(frameT,label=‘这是一个按钮’)

逻辑都是这样,大家需要什么空间去查一下就可以了,而且有wxformbuilder,这些ui设计上都可以直接通过图形界面设置好,不要太简单。

sizer

这就是一个布局管理器,和qt中的layout是一样的,sizer可以嵌套,可以往里面放不同的window。

它的逻辑也很简单,如下

#新建一个sizer对象,这是一个删格化的sizer,2行2列,垂直和水平间隙都是5
grid = GridSizer(cols=2,rows=2,vgap=5,heap=5)
#新建window
btn1 = wx.Button(frameT,label=1)
btn2 = wx.Button(frameT,label=2)
bt3 = wx.Button(frameT,label=3)
bt4 = wx.Button(frameT,label=4)
#注意创建window的时候,其父窗口不是sizer,sizer只是一个容器,并非窗口或者frame
#然后就可以将window添加到sizer中,有两种方式,一种是一个个添加,一种是把window都放在一个数组中一次性添加。都可以设置在sizer中的放置方式,对齐等等,格式基本都在这里设置。
grid.Add(btn1,0,wx.EXPAND)
grid.AddMany([(btn2,0,wx.EXPAND),(bt3,0,wx.EXPAND)])

其实这些东西都可以在wxformbuilder中设置完成,但是作为开发人员怎么能不秀一把code呢。

event

事件也做的相当简单,我也觉得和qt的信号和槽如出一辙,其实我觉得这种设计比信号和槽更高级。
事件的逻辑很简单

#直接将事件和window绑定,也有两种方式,一种是主frame来控制,一种是直接绑定到window
frameT.Bind(wx.EVT_BUTTON,onClick, btn1)
bt2,Bind(wx.EVT_BUTTON,onClick2)
#然后定义,window的事件发生时出发的操作
def onClick():print(‘i am deer’)
#就这么简单
def onClick2():print(‘I am deer 2’)

将事件和window绑定,当事件发生时,触发相应的操作。wx很奇怪,鼠标点击button事件叫EVT_BUTTON,不是叫click,可以去查一下官方文档,有什么事件。

wxformbuilder使用的一点建议

  • 生成的python代码需要手动复制到新建py文件中,记得设置编码格式utf-8
  • frame是必须添加的第一项内容
  • 显示内容不是text属性,是label属性。
  • 输入文本框的值只能用SetValue和GetValue两个方法来设置和读取(当你需要这么做的时候)
  • 窗口初始化的时候,可以手动更改代码,让frame类初始化的时候设置窗口名
  • wxformbuilder有些和wxpython的函数些许不一样,有错误别慌,稍微改一下就好了。

cxfreeze的一点使用技巧

我使用的是6.0版本,bug还挺多的,不过还是能够征服的。我比较懒,对我来说这些只是工具而已,所以比起那些需要写配置的打包程序,我很反感。不过大家可以试试exe打包的另外两种方式py2exe和pyinstall,听说在python3下面不好用,也不知道真假。
首先声明,cxfreeze是一个python库。所以网上很多都是骗人的(其实是他们不知道而已,哈哈)。
可以用pip安装下载的cxfreeze,库装好了,就去python安装目录下(或者conda),在Script目录下有一个cxfreeze.py运行它,

python cxfreeze.py install

这一步是为了将这个工具加入系统命令,其实还是一个python库。
装好了就可以按照大家说的打包了

cxfreeze 要打包的py文件 ——target-dir 存放目录 ——target-name 打包好的exex文件名 ——icon 设置exe的图标 ——base-script 要想exe不从cmd运行就加上它,指定其值为win32GUI最好啦,其实就是exe运行时不会出现一个cmd

当然cxfreeze也是可以直接设置配置文件的,但他会提示你输入内容,就是你直接根据提示输入参数,就能直接生成配置文件。命令是cxfreeze-quickstart 可以按照提示直接运行,也可以

cxfreeze setup.py build

最后一点,cxfreeze是一个库,所以可以在Script目录下运行

python cxfreeze.py 要打包的py文件 后面接参数

最后说一点。打包的时候,会出现很多问题,主要原因就是打包的库不完整,些许的不兼容等,大家只要知道,只要出现找不到模块的,就去python安装目录那考到lib目录下就可以了。像scipy和numpy就不行,得拷贝过去。若是出现“_distributor等”模块找不到,你就去scipy和numpy的安装目录里,把init.py文件中对“_distributor”的导入注释掉就行了,无影响。
————-
其实我就学了一天,写了个小程序,理解没有那么深入,不过按照我的思路,我想快速入门不是问题。

windows下,基于python3的wxpython体验+cxfreeze6.0使用相关推荐

  1. Windows下基于python3使用word2vec训练中文维基百科语料资料汇总

    Windows下基于python3使用word2vec训练中文维基百科语料(一):https://www.cnblogs.com/gaofighting/p/9055674.html Windows下 ...

  2. Windows下基于python3使用word2vec训练中文维基百科语料(一)

    在进行自然语言处理之前,首先需要一个语料,这里选择维基百科中文语料,由于维基百科是 .xml.bz2文件,所以要将其转换成.txt文件,下面就是相关步骤: 步骤一:下载维基百科中文语料 https:/ ...

  3. Windows下基于python3使用word2vec训练中文维基百科语料(三)

    对前两篇获取到的词向量模型进行使用: 代码如下: 1 import gensim 2 model = gensim.models.Word2Vec.load('wiki.zh.text.model') ...

  4. ESP32 ESP-IDF开发环境搭建,Windows下基于ESP-IDF | Cmake | VScode插件的 ESP32 开发环境搭建

      之前的一篇博客 Windows上基于ESP-IDF搭建ESP32开发环境 发布后,深受好评.几个月过去了,乐鑫的esp-idf-tools安装工具发生了较大的变化,VsCode插件的功能也愈加完善 ...

  5. c++网络编程——用TCP实现文件传输(windows下基于VS2017)

    c++网络编程--用TCP实现文件传输 定义文件传输协议 服务端代码 客户端代码 测试 文件传输协议FTP是基于TCP协议实现的,为了体验这个过程,本文自定义一个简单的文件传输协议,并基于TCP协议编 ...

  6. 在windows下基于visual studio2017和CMake的安装Google glog

    这里简单记录安装google glog在windows下基于visual studio2017的安装过程. 下载 https://github.com/google/glog 使用cmake编译,编译 ...

  7. Windows下基于IIS服务的SSL服务器的配置

    Windows下基于IIS服务的SSL服务器的配置 实验环境 Windows Server 2008 R1(CA) Windows Server 2008 R2(web服务器) Windows 7 x ...

  8. windows下基于Aria2的下载工具

    windows下基于Aria2的下载工具 Motrix https://motrix.app/ https://www.iplaysoft.com/motrix.html Photon https:/ ...

  9. windows下基于libtorch的yolov5 6.0的c++部署

    windows下基于libtorch的yolov5 6.0的c++部署 1.概述 libtorch是pytorch的C++版本,在需要多进程.提高推理速度等需求下会比python语言更具有优势.本文根 ...

最新文章

  1. 简单介绍vue获取token实现token登录的示例代码
  2. camera客观测试_光学图像测试之屏幕色彩管理测试
  3. DL之GoogleNet:GoogleNet(InceptionV1)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  4. 推荐11个实用Python库
  5. Scrapy框架学习笔记 - 爬取腾讯招聘网数据
  6. php处理html数据类型,PHP html_entity_decode() 函数 | 菜鸟教程
  7. In App Purchases(IAP 应用程序內购买): 完全攻略
  8. 华为交换机镜像端口配置
  9. doc,excel,ppt转存pdf并预览
  10. python一共多少模块,python常见模块有哪些
  11. 学术会议 Rebuttal 模板
  12. 新型企业最重视的评估手段:360评估
  13. C# 使用Zebra斑马打印机打印ZPL文件工具
  14. 科大奥锐密立根油滴实验数据_密立根油滴实验数据处理
  15. activemq使用详解
  16. javaS的tring和androidS的tring区别是什么?
  17. 在Python中,可以使用try-except语句来处理异常。
  18. Java使用jdbc连接sqlserver2000与2005的语句差别
  19. 东南大学计算机专硕录取分数线,东南大学研究生录取分数线
  20. 升职加薪申请书 经典范文

热门文章

  1. JS跨域设置和取Cookie(二)
  2. Power BI——建模
  3. onSubmit与onClick的区别
  4. python--socket(套接字/插口)
  5. Linux入门,RTFM阅读那该死的手册
  6. android时间戳单位是什么,Android之判断时间戳是不是今天
  7. Yolov3,v4,v5区别
  8. python speech语言模块安装
  9. 分辨率极限-时间分辨率+空间分辨率和图像超分辨重建技术
  10. SimpleDateFormat api