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

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

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

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

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

二、wx模块的安装:

  1. C:\Users\Administrator> pip install wxpython

三、图形化介绍

……

四、wx主要组件介绍

1、frame(窗口

  1. 参数:
  2.  
  3. parent = None #父元素,假如为None,代表顶级窗口
  4.  
  5. id = None #组件的标识,唯一,假如id为-1代表系统分配id
  6.  
  7. title = None #窗口组件的名称
  8.  
  9. pos = None #组件的位置,就是组件左上角点距离父组件或者桌面左和上的距离
  10.  
  11. size = None #组件的尺寸,宽高
  12.  
  13. style = None #组件的样式
  14.  
  15. name = None #组件的名称,也是用来标识组件的,但是用于传值

2、TextCtrl(文本框)

  1. 参数:
  2.  
  3. parent = None #父元素,假如为None,代表顶级窗口
  4.  
  5. id = None #组件的标识,唯一,假如id为-1代表系统分配id
  6.  
  7. value = None #文本框当中的内容
  8. GetValue #获取文本框的值
  9. SetValue #设置文本框的值
  10.  
  11. pos = None #组件的位置,就是组件左上角点距离父组件或者桌面左和上的距离
  12.  
  13. size = None #组件的尺寸,宽高
  14.  
  15. style = None #组件的样式
  16.  
  17. validator = None #验证
  18.  
  19. name = None #组件的名称,也是用来标识组件的,但是用于传值

3、Button(按钮)

  1. 参数:
  2.  
  3. parent = None #父元素,假如为None,代表顶级窗口
  4.  
  5. id = None #组件的标识,唯一,假如id为-1代表系统分配id
  6.  
  7. lable = None #按钮的标签
  8.  
  9. pos = None #组件的位置,就是组件左上角点距离父组件或者桌面左和上的距离
  10.  
  11. size = None #组件的尺寸,宽高
  12.  
  13. style = None #组件的样式
  14.  
  15. validator = None #验证
  16.  
  17. name = None #组件的名称,也是用来标识组件的,但是用于传值

其它组件的参数类似

4、创建窗口基础代码

  1. 基本创建窗口代码说明:
  2.  
  3. import wx #引入wx模块
  4. app = wx.App() #实例化一个主循环
  5. frame = wx.Frame(None) #实例化一个窗口
  6. frame.Show()#调用窗口展示功能
  7. app.MainLoop()#启动主循环

效果如下图:  

五、Gui编写简单实例

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

1、图形化编写

  1. import wx
  2.  
  3. app = wx.App()
  4. frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))
  5.  
  6. path_text = wx.TextCtrl(frame,pos = (5,5),size = (350,24))
  7. open_button = wx.Button(frame,label = "打开",pos = (370,5),size = (50,24))
  8. save_button = wx.Button(frame,label = "保存",pos = (430,5),size = (50,24))
  1. content_text= wx.TextCtrl(frame,pos = (5,39),size = (475,300),style = wx.TE_MULTILINE) # wx.TE_MULTILINE可以实现换行功能,若不加此功能文本文档显示为一行显示
  1. frame.Show() app.MainLoop()

2、事件绑定

  1. 1、定义事件函数
  2. 事件函数有且只有一个参数,叫event
  3.  
  4. def openfile(event):
  5. path = path_text.GetValue()
  6. with open(path,"r",encoding="utf-8") as f: #encoding 设置文件打开时指定为utf8编码,避免写文件时出现编码错误
  7. content_text.SetValue(f.read())
  8.  
  9. 2、绑定出发事件的条件和组件
  10.  
  11. open_button.Bind(wx.EVT_BUTTON,openfile)

3、完整代码

  1. #coding:utf-8
  2. import wx
  3.  
  4. def openfile(event): # 定义打开文件事件
  5. path = path_text.GetValue()
  6. with open(path,"r",encoding="utf-8") as f: # encoding参数是为了在打开文件时将编码转为utf8
  7. content_text.SetValue(f.read())
  8.  
  9. app = wx.App()
  10. frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))
  11.  
  12. path_text = wx.TextCtrl(frame,pos = (5,5),size = (350,24))
  13. open_button = wx.Button(frame,label = "打开",pos = (370,5),size = (50,24))
  14. open_button.Bind(wx.EVT_BUTTON,openfile) # 绑定打开文件事件到open_button按钮上
  15.  
  16. save_button = wx.Button(frame,label = "保存",pos = (430,5),size = (50,24))
  17.  
  18. content_text= wx.TextCtrl(frame,pos = (5,39),size = (475,300),style = wx.TE_MULTILINE)
  19. # wx.TE_MULTILINE可以实现以滚动条方式多行显示文本,若不加此功能文本文档显示为一行
  20.  
  21. frame.Show()
  22. app.MainLoop()

  

  六、尺寸器

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

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

1、BoxSizer(尺寸器)

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

2、步骤

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

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

  1. #coding:utf-8
  2. import wx
  3.  
  4. def openfile(event): # 定义打开文件事件
  5. path = path_text.GetValue()
  6. with open(path,"r",encoding="utf-8") as f: # encoding参数是为了在打开文件时将编码转为utf8
  7. content_text.SetValue(f.read())
  8.  
  9. app = wx.App()
  10. frame = wx.Frame(None,title = "Gui Test Editor",pos = (1000,200),size = (500,400))
  11.  
  12. panel = wx.Panel(frame)
  13.  
  14. path_text = wx.TextCtrl(panel)
  15. open_button = wx.Button(panel,label = "打开")
  16. open_button.Bind(wx.EVT_BUTTON,openfile) # 绑定打开文件事件到open_button按钮上
  17.  
  18. save_button = wx.Button(panel,label = "保存")
  19.  
  20. content_text= wx.TextCtrl(panel,style = wx.TE_MULTILINE)
  21. # wx.TE_MULTILINE可以实现以滚动条方式多行显示文本,若不加此功能文本文档显示为一行
  22.  
  23. box = wx.BoxSizer() # 不带参数表示默认实例化一个水平尺寸器
  24. box.Add(path_text,proportion = 5,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件
  25. #proportion:相对比例
  26. #flag:填充的样式和方向,wx.EXPAND为完整填充,wx.ALL为填充的方向
  27. #border:边框
  28. box.Add(open_button,proportion = 2,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件
  29. box.Add(save_button,proportion = 2,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件
  30.  
  31. v_box = wx.BoxSizer(wx.VERTICAL) # wx.VERTICAL参数表示实例化一个垂直尺寸器
  32. v_box.Add(box,proportion = 1,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件
  33. v_box.Add(content_text,proportion = 5,flag = wx.EXPAND|wx.ALL,border = 3) # 添加组件
  34.  
  35. panel.SetSizer(v_box) # 设置主尺寸器
  36.  
  37. frame.Show()
  38. app.MainLoop()

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

        

python GUI图形化编程-----wxpython的更多相关文章

  1. python:GUI图形化数据库巡检工具

    问题描述:时间过得真快,一眨眼又一个月过去,2022又过去大半,7月的尾巴,终于稍微做出来点 东西,本人也不是开发,也是在不断学习的一枚小白.这次使用tkinter制作了一个mysql的巡检工具,使用 ...

  2. Sikuli:创新的图形化编程技术

    Sikuli是一种使用截图进行UI自动化测试的技术.Sikuli包括sikul脚本,基于Jython的API以及sikuli IDE.Sikuli可以实现任何你可以在显示器上看到ui对象的自动化,你可 ...

  3. 黑马程序员:Java基础总结----GUI图形化界面

    黑马程序员:Java基础总结 GUI图形化界面   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流!   GUI(Graphical User Interface)图形化界 ...

  4. ROS(indigo) 用于机器人控制的图形化编程工具--code_it robot_blockly

    0 简介: 编程语言有汇编,高级语言,解释语言等,现在图形化编程也越来越流行.图形化编程简单易学.8年前,微软推出了VPL用于机器人程序设计,如Python和JavaScript都可以用图形化框图实现 ...

  5. Kittenblock画笔基础,移动留下痕迹的蝴蝶,图形化编程经验分享

    Kittenblock画笔基础,移动留下痕迹的蝴蝶,图形化编程经验分享 跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关 ...

  6. 图形化编程娱乐于教,Kittenblock实例,为背景添加音乐

    图形化编程娱乐于教,Kittenblock实例,为背景添加音乐 跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题 ...

  7. 图形化编程娱乐于教,Kittenblock实例,图章效果的音乐画面

    跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题在于,带入感,我能给出的建议,就是咬咬牙,坚持住,没有学不会的知 ...

  8. 图形化编程娱乐于教,Kittenblock实例,测试声音的响度

    跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题在于,带入感,我能给出的建议,就是咬咬牙,坚持住,没有学不会的知 ...

  9. Atiti  qq空间破解(3)------------gui图形化通用cli执行器atiuse

    Atiti  qq空间破解(3)------------gui图形化通用cli执行器atiuse 结构:::命令行+以及反馈log框1 cli_guiUI/index.htm1 /AtiPlatf_c ...

随机推荐

  1. mysql只删除表不删除库

    1.备份数据库mysqldump -uroot -P13306 -h10.1.50.14 -p 库名 > /opt/20190109.sql2.删除所有表mysql -uroot -P13306 ...

  2. bzoj 2780

    后缀自动机的应用 首先我们观察到:如果一个询问串的答案不为0,那么这个串一定是至少一个模式串的子串 如果只有一个模式串,那么这个问题可以简单地用什么东西解决掉(比如普通后缀自动机) 而这里有很多模式串 ...

  3. linux基础一篇就够了

    Linux学习笔记 粗略笔记第一版,全文约2000行50000字 1. 时间和日历 date:查看当前时间 cal:查看当月日历 cal 2018:查看年日历 cal 10 2018:指定某年某月日历 ...

  4. java开发学生信息管理系统的实现(简洁易懂),适合计算机专业学生参考,课程设计、毕业论文设计参考等

    编写一个简单的学生管理信息系统. 在oracle中设计一张学生表,以学号作为关键字. 其他学生信息有:姓名.手机号. 在进入系统时,显示如下菜单: ************************** ...

  5. node20180927

    1. fs读文件.写文件 // 1 fs读文件 var fs = require('fs') fs.readFile('./20180926 demo/a.text', function (err, ...

  6. OK Titlefasdf asd

    Do a lot of material ! asdfa sdgadfasdg Android  is ok, IOS is also ok.

  7. Python学习(三十二)—— Django之视图系统

    转载自:http://www.cnblogs.com/liwenzhou/articles/8305104.html Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Pyth ...

  8. python数据类型——数据转换

    数据类型有很多种,比如数值和字符,比如6和a,字符是需要加双引号的,下面的例子运行的结果是不一样的,数值会相加而字符会相连 print(6+6)print("6"+"6& ...

  9. js中一个对象中遇到一个相同的key所对应的value值相加

    如图: 变成: js原生如下: var abc=[ {typeid:1,ade:1}, {typeid:2,ade:1}, {typeid:1,ade:2}, {typeid:1,ade:2}, {t ...

  10. easyui提交form表单接受数据处理、

    $('#Form').form('submit', { url:"withdrawal/bankAuthenticate4List.do", onSubmit: function( ...