1、初识GUI

1.1 什么是GUI

GUI是Graphical User Interface(图形用户界面)的缩写,在GUI中,并不只是输入文本和返回文本,用户可以看到窗口、按钮、文本框等图形,而且可以用鼠标单击,还可以通过键盘输入。

GUI是与程序交互的一种不同的方式。GUI的程序有三个基本要素:输入、处理和输出。

1.2 常用的GUI框架

有很多工具包可以使用,具体介绍wxPython和PyQT

wxPython是Python语言的一套优秀的GUI图形库,允许Python程序员很方便地创建完整的、功能健全的GUI用户界面。

PyQT是QT库的Python版本,支持跨平台。

2、wxPython框架的使用

2.1 安装wxPython

官方网站:http://wxpython.org

安装命令:pip install  -U wxPython

出现错误time out处理:使用豆瓣源,加快下载

pip install -i https://pypi.doubanio.com/simple/ --trusted-host pupi.doubanio.com wxpython

2.2 创建一个wx.App的子类

(1)定义这个子类。

(2)在定义的子类中写一个OnInit()初始化方法。

(3)在程序的主要部分创建这个类的一个实例。

(4)调用应用程序实例的MainLoop()方法,这个方法将程序的控制权转交给wxPython.

例:创建一个没有任何功能的子类。代码如下:

# -*- coding:utf-8 -*-import wx  # 导入wxPythonclass App(wx.App):  # 定义子类# 初始化方法def OnInit(self):frame = wx.Frame(parent=None, title='Hello wxPython')  # 创建顶级窗口frameframe.Show()  # 显示窗口return True  # 返回值if __name__ == '__main__':app = App()  # 创建App类的实例app.MainLoop()  # 调用App类的MainLoop()主循环方法

应用程序对象————设置窗体属性————》顶级窗口

|                                                                      ↑         |

|                                                             /                   |

由app对象启动                         /                       父级/子级关系

|                 给事件处理器发送事件                        |

↓               /                                                                ↓

主循环事件《——在组件中触发事件——————窗体组件

2.3 直接使用wx.App

如果系统中只有一个窗口,可以不用创建wx.App子类,直接使用wx.App

# -*- coding:utf-8 -*-import wx  # 导入wxPythonapp = wx.App()  #初始化wx.App类frame = wx.Frame(None, title='Hello wxPython')  #创建顶级窗口frame
frame.Show()  # 显示窗口
app.MainLoop()  #调用App类的MainLoop()主循环方法

2.4 使用wx.Frame框架

在GUI中框架通常也称为窗口。框架是一个容器,用户可以在他的屏幕上任意移动,并可对他进行缩放,它通常包含注入标题连、菜单等等。在wxPython中,wx.Frame是所有框架中的父类。当创建wx.Frame的子类时,子类应该调用其父类的构造器wx.Frame.__init__()。wx.Frame的构造器语法格式如下:

wx.Frame(parent,id=-1,title="",pos=wx.DefaultPostion,size=wx.DefaultSize,style=wx.DEFAULT_FRAME_STYLE,name="frame")

参数说明

parent:框架中的父窗口。如果是顶级窗口,这个值是None。

id:关于新窗口的wxPython ID号。通常设为-1,让wxPython自动生成一个新的ID。

title:窗口的标题。

pos:一个wx.Point对象。指定新窗口左上角在屏幕中的位置,通常(0,0)是显示器的左上角,(-1,-1)默认让系统决定窗口的位置

size:一个wx.Size对象,指定窗口的初始尺寸,(-1,-1)让系统决定窗口的初始位置

style:指定窗口的类型的常量

name:框架的内在名字,使用它来寻找这个窗口。

创建wx.Frame子类的代码如下:

import wx       # 导入wxPython模块class MyFrame(wx.Frame):  # 定义子类,继承wx.Frame的初始化def __init__(self, parent, id):  # 定义初始化方法wx.Frame.__init__(self, parent, id, title="创建Frame", pos=(100, 100), size=(300, 300))  # wx.Frame框架参数设置if __name__ == "__main__":  # 以主函数程序执行app = wx.App()    # 初始化应用frame = MyFrame(parent=None, id=-1)   # 实例MyFrame类,并传递参数frame.Show()            # 显示窗口app.MainLoop()          # 调用MainLoop()主循环方法

小结:

创建应用1、创建一个wx.App的子类

2、直接使用wx.App

3、使用wx.Frame框架

2.5 常见控件

(1)Static Text文本类

功能:在屏幕上绘制纯文本,纯静态文本,可以改变文本的对齐方式、字体和颜色。

语法:wx.StaticText(parent,id,label,pos=wx.DefaultPostition,size=wx.DefaultSize,style=0,name="staticText)

参数:

parent:父窗口不见

id:自增,标识符,使用-1可以自动创建一个唯一的标识。

label:显示在静态控件中的文本内容

pos:一个wx.Point或一个Python元祖,他是窗口部件的位置

size:一个wx.Size或一个Python元祖,他是窗口部件的尺寸

style:样式标记

name:对象的名字

wx.Panel(self)画板

wx.Font类设置字体

wx.Font(pointSize,family,style,weight,underline=False,faceName="",encoding=wx.FONTENCODING_DEFAULT)

参数:

pointSize:字体的整数尺寸,单位为磅

famliy:用于快速指定一个字体而无须知道改字体实际的名字

style:指明字体是否倾斜

weight:指明字体的醒目程度

underline:在window系统下有效,True则加下划线,Fault则无下划线

faceName:指定字体名

encoding:允许在几个编码中选择一个,多数情况使用默认编码。

(2)TextCtrl输入文本类

用于用户输入文本和用户之间的交互,允许多行文本和单行文本,可用于密码空间,掩饰输入的按键。

(3)Button按钮类

用于捕获用户生成的单击事件,最明显的用途是触发绑定到一个处理函数

2.6 BoxSizer布局

前面介绍的控件,为绝对位置。sizer尺寸器用于自动布局一组窗口控件的算法。

纵向:vertical

横向:horizontal

使用BoxSizer

(1)创建BoxSizer——》sizer=wx.BoxSizer(wx.VERTICAL)

(2)添加控制———》sizer.Add()

Add()方法格式:Box.Add(control,porportion,flag,border)

(3)设置sizer———》panel.setsizer(sizer)

2.7事件处理

(1)什么是事件

在组件上实现的操作,称为事件event

(2)绑定事件

程序需要对事件做出反应。利用控件Bind()方法将事件处理函数绑定到给定的事件上

bt_confirm.Bind(wx.EVT_BUTTON,OnclickSubmit)

常用的GUI框架(1)相关推荐

  1. python gui编程框架_工程师必知的几个Python GUI框架

    GUI全称为Graphical User Interface,翻译成中文:图形化用户接口,Python可以通过这些框架, 来编写出美观易操作的图形化界面.Python的GUI库很多,下面介绍几个Pyt ...

  2. OpenGL研究, GUI框架分析, 虚拟机比较, Win10历险记, WxWidget, uboot, WireShark

    http://antkillerfarm.github.io/ OpenGL研究 书籍 我手上其实有几本关于OpenGL的实体书,但是比较了一下之后,发现还是电子版的<OpenGL编程指南> ...

  3. gimp 架构_常见GUI 框架

    1:wxWidgets wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供 GUI(图形用户界面)和其它工具.目前的2.x版本支持所有版本的Windows.带GTK+ ...

  4. CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧

    CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧 ...

  5. Android 进阶笔记,包含常用的技术框架、博客社区、书籍等。

    AndroidNote 项目地址:venshine/AndroidNote 简介:Android 进阶笔记,包含常用的技术框架.博客社区.书籍等. 大纲 技术框架 图片加载 网络请求 数据库 ORM ...

  6. iOS开发 常用第三方开源框架

    iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 2015-04-05 15:25 2482人阅读 评论(1) 收藏 举报 开源框架 图像: 1.图片浏览控件MWPhotoBrowse ...

  7. OS开发-常用第三方开源框架介绍

    为什么80%的码农都做不了架构师?>>>    OS开发-常用第三方开源框架介绍 http://blog.csdn.net/meiwenjie110/article/details/ ...

  8. python gui框架_Python的GUI框架PySide的安装配置教程

    (一)说在前面 Python自带了GUI模块Tkinter,只是界面风格有些老旧.另外就是各种GUI框架了. 之前安装过WxPython,并做了简单的界面.遂最近又重新搜索了一下网上关于Python ...

  9. 基于IOC的GUI框架设计与实现

    摘  要:传统的图形用户界面GUI(Graphics User Interface)设计中,存在过度耦合.组件与事件之间的映射关系混乱等问题.对此,提出了基于控制反转(IOC)的GUI框架,该框架采用 ...

最新文章

  1. 报错解决:RequestsDependencyWarning: urllib3 (1.24.3) or chardet (3.0.4) doesn't match a supported versio
  2. 人脸识别机器学习实战
  3. 在Linux上取得Windows上的文件
  4. 华为云查询弹性云服务器规格信息,通用计算型弹性云服务器规格介绍详情-华为云...
  5. Springboot 连接数据库
  6. canal原理的一些学习-2(HA 模式搭建)
  7. android管理activity顺序,android activity 六个主要函数以及一些调用顺序
  8. Linux的slab和nginx的区别,Nginx核心知识100讲》nginx Slab管理器
  9. java 有参数的构造函数如何注入_Spring5参考指南:依赖注入
  10. flume + kafka
  11. PL/SQL程序设计 第四章 游标的使用
  12. 假如在1996年,微软、IBM、苹果你会投资谁?
  13. mysql 测试数据生成器_ApexSQL Generate(SQL测试数据生成器)
  14. 给移动硬盘装上LINUX全攻略
  15. catia 摆正点云的方法_基于CATIA的逆向工程点云定位方法
  16. python灰度雷达图_python 雷达图
  17. 为什么要用Citrix桌面虚拟化?
  18. 在互联网时代,读书人如何更好的养活自己
  19. vue中EventBus的实现原理
  20. formal Verification 形式验证 形式验证的最大障碍:误报(false positives)的危险 第9章

热门文章

  1. STM32超低功耗进阶之RTC
  2. ABB机器人备份的那些事儿
  3. HTTP、HTTPS协议以及抓包工具
  4. hp1015驱动64位_HP LaserJet1010 x64驱动下载|HP LaserJet1015 win7 x64驱动 - 驱动无忧
  5. 联想笔记本电脑——开启BIOS/CPU开启虚拟化(VT)
  6. 计算精确,完全可以作为包括高速公路在内的卵型曲线坐标计算。
  7. 创建一个长度为30的数组,每五个一组求平均数
  8. 计算机模拟求解流体力学方程,大学物理中流体力学问题的计算机模拟研究.PDF...
  9. 易语言打开C盘文件,易语言教程磁盘操作目录相关
  10. [译]游戏编程入门(by David Astle)