python GUI图形化编程wxpython的使用

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

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

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

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

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

二、wx模块的安装:

C:\Users\Administrator> pip install 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()#启动主循环

效果如下图:  

五、Gui编写简单实例

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

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()

六、尺寸器

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

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

1、BoxSizer(尺寸器)

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

2、步骤

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

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))

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()

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

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

(0)

相关推荐

  • Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程

    Python是支持可视化编程,即编写gui程序,你可以用它来编写自己喜欢的桌面程序.使用wxPython来做界面非常的简单,只是不能像C#一样拖动控件,需要自行写代码布局.在完成编写之后,由于直接的py文件不能再没有安装python的电脑上运行,能否有一个打包成在任意电脑都能运行的工具,网上找找发现了py2exe正好可以完成这个功能.wxPython和py2exe都是开源免费软件. 环境配置 wxPython: sourceforge项目页https://sourceforge.net/proj

  • 基于wxPython的GUI实现输入对话框(1)

    本文实例为大家分享了基于wxPython的GUI实现输入对话框的具体代码,供大家参考,具体内容如下 编程时,免不了要输入一些参数等,这时输入对话框就派上用处了: #-*- coding:utf-8 -*- #~ #-------------------------------------------------------------------------------- #~ FileName=wxinputbox.py #~ Funciton:wx的输入对话框 #~ author:吴徐平 #

  • 基于wxpython实现的windows GUI程序实例

    本文实例讲述了基于wxpython实现的windows GUI程序.分享给大家供大家参考.具体如下: # using a wx.Frame, wx.MenuBar, wx.Menu, wx.Panel, wx.StaticText, wx.Button, # and a wx.BoxSizer to show a rudimentary wxPython Windows GUI application # wxPython package from: http://prdownloads.sou

  • 基于wxPython的GUI实现输入对话框(2)

    接着上一篇基于wxPython的GUI输入对话框1,继续学习. 在程序输入中,有时会要求同时改变多个参数值,而且类型也不尽相同, 这时TextEntryDialog就显得不适用了.WxInput模块则比较彻底的解决了这个问题. 比如我有三个值要用户交互式设置,一个是int数,一个是str,一个是float,先看示例文件: from WInput import InputBox values={'int':1,'String':'This is String','float':3.5} title

  • 基于wxpython开发的简单gui计算器实例

    本文实例讲述了基于wxpython开发的简单gui计算器.分享给大家供大家参考.具体如下: # wxCalc1 a simple GUI calculator using wxPython # created with the Boa Constructor which generates all the GUI components # all I had to do is add some code for each button click event # Boa free from: h

  • 在Ubuntu系统下安装使用Python的GUI工具wxPython

    (一)wxpython的安装 Ubuntu下的安装,还是比较简单的. #使用:apt-cache search wxpython 测试一下,可以看到相关信息 dizzy@dizzy-pc:~/Python$ apt-cache search wxpython cain - simulations of chemical reactions cain-examples - simulations of chemical reactions cain-solvers - simulations of

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

    一.python gui(图形化)模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建 Pyqt :是python最复杂也是使用最广泛的图形化 Wx :是python当中居中的一个图形化,学习结构很清晰 Pywin :是python windows 下的模块,摄像头控制(opencv),常用于外挂制作 二.wx模块的安装: C:\Users\Administrator> pip install wxpython 三.图形化介绍 -- 四.wx主要组件介绍 1.fra

  • python基于tkinter图形化编程实现简易计算器功能

    基于tkinter图形化编程的简易计算器,供大家参考,具体内容如下 代码如下: import re import tkinter import tkinter.messagebox root = tkinter.Tk() # 设置窗口大小和位置 root.geometry('300x270+400+100') # 不允许改变窗口大小 root.resizable(False, False) # 设置窗口标题 root.title('简易计算机'.center(25)) # 设置用来显示信息的文本

  • golang 开启opencv图形化编程

    目录 正文 环境配置 API编程 常用API OpenVideoCapture VideoCaptureDevice VideoCaptureFile NewWindow SetWindowTitle NewMat NewMatWithSize NewMatFromScalar NewCascadeClassifier Load 正文 最近在国外一个嵌入式编程网站上看到其平台支持Opencv库,出于好奇在其说明文档上看到gocv.io Opencv golang库的官网.就是下面这个. 在开启编

  • 解析Java图形化编程中的文本框和文本区

    在图形界面中,文本框和文本区是用于信息输入输出的组件. 文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是ActionListener. 文本框处理程序的基本内容有以下几个方面: 声明一个文本框名. 建立一个文本框对象. 将文本框对象加入到某个容器. 对需要控制的文本框对象注册监视器,监听文本框的输入结束(即输入回车键)事件. 一个处理文本框事件的方法,完成对截获事件进行判断和处理. JTextField类的主要构

  • 详解Java图形化编程中的鼠标事件设计

    鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionListener接口. MouseListener接口 MouseListener接口能处理5种鼠标事件:按下鼠标,释放鼠标,点击鼠标.鼠标进入.鼠标退出.相应的方法有: (1) getX():鼠标的X坐标 (2) getY():鼠标的Y坐标 (3) getModifiers():获取鼠标的左键或右键

  • Java图形化编程中的键盘事件设计简介

    键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下.释放或敲击键盘上的某个键时就会发生键盘事件.键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListener(监视器).实现KeyListener接口有3个: keyPressed(KeyEvent e):键盘上某个键被按下: keyReleased(KeyEvent e):键盘上某个键被按下,又释放: keyTyped(KeyEvent e):keyPressed和keyReleased两个方法的组合

  • python GUI编程实现扫雷游戏

    目录 前言 一.基本思路 二.源代码 1.运行效果 2.上源码 总结 前言 1992年扫雷被加入到windows3.1,成为早期windows的经典游戏.近来接触python的GUI(图形化)编程,于是通过编写扫雷来实践学习.有关程序的问题和想法欢迎大家指出. 一.基本思路 (1)程序的核心数据是二维列表control_list[16][16],值-1代表雷,0和其他数字代表四周雷的数目.函数randomization()随机40个雷的 位置(2)生成16x16个按钮控件,根据control_l

  • 基于Python的GUI图形用户界面编程详细讲解

    目录 前言 常用的GUI库 1.Tkinter 2.wxPython 3.PyQT 基于tkinter模块创建GUI程序步骤 主窗口设置 主窗口位置和大小 GUI编程整体描述 常用组件汇总列表 GUI应用程序类的经典写法 总结 前言 在最早程序的设计中,程序和用户的交互都是通过控制台来完成的,而GUI(Graphics User Interface),即图形用户编程,是Python 所提供的一个丰富的组件,可以快速的实现使用图形界面和用户交互. 常用的GUI库 1.Tkinter tkinter

  • Python+Tkinter制作专属图形化界面

    目录 介绍 tkinter的简单应用 显示窗口 设置窗口大小 调整窗口位置(使用的是同一个方法) 设置窗口的标题 添加标签控件,并定位 添加输入框,并定位 调整控件的摆放位置 添加点击按钮 点击按钮自定义功能 介绍 本期案例是带着大家制作一个属于自己的GUI图形化界面—>用于设计签名的哦(效果如下图),是不是感觉很好玩,是不是很想学习呢?限于篇幅,今天我们首先详细讲述一下Tkinter的使用方法.本来不准备详细讲述这个基础知识,但是我怕那些想学习的同学,学起来不过瘾,还是补充了这一章. tkin

  • Python基础之tkinter图形化界面学习

    一.基础内容 import tkinter as tk from PIL import Image,ImageTk def my(): pwin.destroy() win.deiconify() win = tk.Tk() #win.geometry('320x240+100+50') #长320宽240 右100,下50 win['width']=320 #可以用win.keys()查看哪些可以这样写 win['height']=240 win.title('tkinter图形化专题学习')

随机推荐