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实现的文件同步服务器实例
Jun 02 Python
Python实现代码统计工具(终极篇)
Jul 04 Python
Python实现单词翻译功能
Jun 06 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
python递归实现快速排序
Aug 18 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
python sort、sort_index方法代码实例
Mar 28 Python
完美解决Django2.0中models下的ForeignKey()问题
May 19 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
python如何操作mysql
Aug 17 Python
python通过函数名调用函数的几种场景
Sep 23 Python
pytorch finetuning 自己的图片进行训练操作
Jun 05 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
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
PHP制作万年历
2015/01/07 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
PHP实现将base64编码字符串转换成图片示例
2018/06/22 PHP
浏览器常用高宽的jquery插件
2011/02/24 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
FF(火狐)浏览器无法执行window.close()解决方案
2014/11/13 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
vue生命周期的探索
2019/04/03 Javascript
vue开发移动端底部导航条功能
2020/04/08 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
Python定时执行之Timer用法示例
2015/05/27 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
canvas 阴影和图形变换的示例代码
2018/01/02 HTML / CSS
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
巴西香水和化妆品购物网站:The Beauty Box
2019/09/03 全球购物
应聘医学检验人员自荐信
2013/09/27 职场文书
信息工程学院毕业生推荐信
2013/11/05 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis