python GUI图形化编程wxpython的使用


Posted in Python onJuly 19, 2019

一、python gui(图形化)模块介绍:

Tkinter :是python最简单的图形化模块,总共只有14种组建

Pyqt :是python最复杂也是使用最广泛的图形化

Wx :是python当中居中的一个图形化,学习结构很清晰

Pywin :是python windows 下的模块,摄像头控制(opencv),常用于外挂制作

二、wx模块的安装:

C:\Users\Administrator> pip install wxpython

三、图形化介绍

python GUI图形化编程wxpython的使用……

python GUI图形化编程wxpython的使用

四、wx主要组件介绍

1、frame(窗口)

参数:

parent = None #父元素,假如为None,代表顶级窗口 
id = None #组件的标识,唯一,假如id为-1代表系统分配id 
title = None #窗口组件的名称 
pos = None #组件的位置,就是组件左上角点距离父组件或者桌面左和上的距离 
size = None #组件的尺寸,宽高 
style = None #组件的样式 
name = None #组件的名称,也是用来标识组件的,但是用于传值

2、TextCtrl(文本框)

参数:

parent = None #父元素,假如为None,代表顶级窗口 
id = None #组件的标识,唯一,假如id为-1代表系统分配id 
value = None #文本框当中的内容
GetValue #获取文本框的值
SetValue #设置文本框的值 
pos = None #组件的位置,就是组件左上角点距离父组件或者桌面左和上的距离 
size = None #组件的尺寸,宽高
style = None #组件的样式
validator = None #验证
name = None #组件的名称,也是用来标识组件的,但是用于传值

3、Button(按钮)

参数:

parent = None #父元素,假如为None,代表顶级窗口 
id = None #组件的标识,唯一,假如id为-1代表系统分配id 
lable = None #按钮的标签 
pos = None #组件的位置,就是组件左上角点距离父组件或者桌面左和上的距离 
size = None #组件的尺寸,宽高 
style = None #组件的样式
validator = None #验证
name = None #组件的名称,也是用来标识组件的,但是用于传值

其它组件的参数类似

4、创建窗口基础代码

基本创建窗口代码说明:import wx #引入wx模块

app = wx.App() #实例化一个主循环<br>

frame = wx.Frame(None) #实例化一个窗口<br>

frame.Show()#调用窗口展示功能<br>

app.MainLoop()#启动主循环

效果如下图:

python GUI图形化编程wxpython的使用

五、Gui编写简单实例

实现如下一个GUI界面,在上面文本框中输入文本文件地址,点击“打开”按钮后将文本文件内容显示在下面的文本框中。

python GUI图形化编程wxpython的使用

1、图形化编写

import wx

 

app = wx.App()

frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))

 

path_text = wx.TextCtrl(frame,pos = (5,5),size = (350,24))

open_button = wx.Button(frame,label = "打开",pos = (370,5),size = (50,24))

save_button = wx.Button(frame,label = "保存",pos = (430,5),size = (50,24))

content_text= wx.TextCtrl(frame,pos = (5,39),size = (475,300),style = wx.TE_MULTILINE) # wx.TE_MULTILINE可以实现换行功能,若不加此功能文本文档显示为一行显示

frame.Show() app.MainLoop()

2、事件绑定

1、定义事件函数

 事件函数有且只有一个参数,叫event

  

def openfile(event):

 path = path_text.GetValue()

 with open(path,"r",encoding="utf-8") as f: #encoding 设置文件打开时指定为utf8编码,避免写文件时出现编码错误

  content_text.SetValue(f.read())

 

2、绑定出发事件的条件和组件

 

open_button.Bind(wx.EVT_BUTTON,openfile)

3、完整代码

#coding:utf-8

import wx

 

def openfile(event):  # 定义打开文件事件

 path = path_text.GetValue()

 with open(path,"r",encoding="utf-8") as f: # encoding参数是为了在打开文件时将编码转为utf8

  content_text.SetValue(f.read())

 

app = wx.App()

frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))

 

path_text = wx.TextCtrl(frame,pos = (5,5),size = (350,24))

open_button = wx.Button(frame,label = "打开",pos = (370,5),size = (50,24))

open_button.Bind(wx.EVT_BUTTON,openfile) # 绑定打开文件事件到open_button按钮上

 

save_button = wx.Button(frame,label = "保存",pos = (430,5),size = (50,24))

 

content_text= wx.TextCtrl(frame,pos = (5,39),size = (475,300),style = wx.TE_MULTILINE)

# wx.TE_MULTILINE可以实现以滚动条方式多行显示文本,若不加此功能文本文档显示为一行

 

frame.Show()

app.MainLoop()

python GUI图形化编程wxpython的使用

六、尺寸器

按照上面的GUI代码有一个缺陷,由于我们各个组件都固定了大小,因此在框体拉伸时,对应的组件不会对应进行拉伸,比较影响用户体验。

python GUI图形化编程wxpython的使用

为了解决上述这个问题,我们可以使用尺寸器进行布局,类似于HTML的CSS样式。

1、BoxSizer(尺寸器)

  • 尺寸器作用于画布(panel)
  • 默认水平布局
  • 垂直布局可以调整
  • 按照相对比例

2、步骤

  • 实例化尺寸器(可以是多个)
  • 添加组件到不同尺寸器中
  • 设置相对比例、填充的样式和方向、边框等参数
  • 设置主尺寸器

3、将上面代码通过尺寸器改写

python GUI图形化编程wxpython的使用

#coding:utf-8

import wx

 

def openfile(event):  # 定义打开文件事件

 path = path_text.GetValue()

 with open(path,"r",encoding="utf-8") as f: # encoding参数是为了在打开文件时将编码转为utf8

  content_text.SetValue(f.read())

 

app = wx.App()

frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))

 

panel = wx.Panel(frame)

 

path_text = wx.TextCtrl(panel)

open_button = wx.Button(panel,label = "打开")

open_button.Bind(wx.EVT_BUTTON,openfile) # 绑定打开文件事件到open_button按钮上

 

save_button = wx.Button(panel,label = "保存")

 

content_text= wx.TextCtrl(panel,style = wx.TE_MULTILINE)

# wx.TE_MULTILINE可以实现以滚动条方式多行显示文本,若不加此功能文本文档显示为一行

 

box = wx.BoxSizer() # 不带参数表示默认实例化一个水平尺寸器

box.Add(path_text,proportion = 5,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件

 #proportion:相对比例

 #flag:填充的样式和方向,wx.EXPAND为完整填充,wx.ALL为填充的方向

 #border:边框

box.Add(open_button,proportion = 2,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件

box.Add(save_button,proportion = 2,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件

 

v_box = wx.BoxSizer(wx.VERTICAL) # wx.VERTICAL参数表示实例化一个垂直尺寸器

v_box.Add(box,proportion = 1,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件

v_box.Add(content_text,proportion = 5,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件

 

panel.SetSizer(v_box) # 设置主尺寸器

 

frame.Show()

app.MainLoop()

通过尺寸器进行布局,无论宽体如何拉伸,内部的组件都会按比例进行变化。

python GUI图形化编程wxpython的使用 

python GUI图形化编程wxpython的使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中__init__.py文件的作用详解
Sep 18 Python
Python 绘图和可视化详细介绍
Feb 11 Python
Python实现一个Git日志统计分析的小工具
Dec 14 Python
python找出完数的方法
Nov 12 Python
python读取txt文件中特定位置字符的方法
Dec 24 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
Python使用python-docx读写word文档
Aug 26 Python
用Python生成HTML表格的方法示例
Mar 06 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
python 通过 pybind11 使用Eigen加速代码的步骤
Dec 07 Python
Django实现翻页的示例代码
May 24 Python
Python正则表达式中flags参数的实例详解
Apr 01 Python
Django 外键的使用方法详解
Jul 19 #Python
python原类、类的创建过程与方法详解
Jul 19 #Python
Django 全局的static和templates的使用详解
Jul 19 #Python
python之拟合的实现
Jul 19 #Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 #Python
python SVM 线性分类模型的实现
Jul 19 #Python
Django密码系统实现过程详解
Jul 19 #Python
You might like
简化php模板页面中分页代码的解析
2009/02/06 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
Ionic快速安装教程
2016/06/03 Javascript
全面了解js中的script标签
2016/07/04 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
python微信公众号开发简单流程实现
2020/03/09 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
在keras中对单一输入图像进行预测并返回预测结果操作
2020/07/09 Python
Python如何实现线程间通信
2020/07/30 Python
python利用platform模块获取系统信息
2020/10/09 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
机电专业毕业生推荐信
2013/11/10 职场文书
五一促销活动总结
2014/07/01 职场文书
幼儿园园长六一致辞
2015/07/31 职场文书
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server