利用wxpython编写GUI
首先建立一个简单的布局合理的图形界面,但是其中按下按键没有事情发生
#encoding=utf-8
__author__ = 'heng'
#编写一个GUI
import wx
app = wx.App() #先创建一个图形界面
win = wx.Frame(None,title = "simple editor",size = (500,500)) #title用于设置图形界面的标题,size是用来设置窗口的初始大小
bkg = wx.Panel(win) #利用Panel管理界面的布局
saveButton = wx.Button(bkg,label = 'save') #在画布bkg上设置标签为save的按键
openButton = wx.Button(bkg,label = 'open')
filename = wx.TextCtrl(bkg) #此函数用于在画布上建立一个文本的输入框
contents = wx.TextCtrl(bkg,style = wx.TE_MULTILINE | wx.HSCROLL) #在画布上建立可换行的文本输入框并且添加了滚动条
#开始布局文本框,左右的布局
hbox = wx.BoxSizer() #开始添加尺寸器,默认为水平
hbox.Add(filename,proportion = 1,flag = wx.EXPAND) #proportion用于设置对象所占的比例,1代表占用剩下的额外空间的所有的空间,flag用来设置图标的属性,wx.EXPAND代表图标可扩展
hbox.Add(saveButton,proportion = 0,flag = wx.LEFT,border = 5) #代表距离左边界的距离为5个像素点(边缘的宽度,间隔)
hbox.Add(openButton,proportion = 0,flag = wx.LEFT,border = 5)
#开始上下的布局
bbox = wx.BoxSizer(wx.VERTICAL) #上下的布局,垂直的布局
bbox.Add(hbox,proportion = 0,flag = wx.EXPAND | wx.ALL,border = 5)
bbox.Add(contents,proportion = 1,flag = wx.EXPAND| wx.LEFT|wx.RIGHT|wx.BOTTOM,border = 5) bkg.SetSizer(bbox)
win.Show()
app.MainLoop()
下面建立一个可以处理按键事件的图形界面
#encoding=utf-8
__author__ = 'heng'
#编写一个GUI
import wx
#添加按键的事件
def load(event):
file = open(filename.GetValue()) #打开小的文本框中的文件
contents.SetValue(file.read()) #读取文本的信息
file.close()
def save(event):
file = open(filename.GetValue(),'w')
file.write(contents.GetValue())
file.close() app = wx.App() #先创建一个图形界面
win = wx.Frame(None,title = "simple editor",size = (500,500)) #title用于设置图形界面的标题,size是用来设置窗口的初始大小
bkg = wx.Panel(win) #利用Panel管理界面的布局
saveButton = wx.Button(bkg,label = 'save') #在画布bkg上设置标签为save的按键
saveButton.Bind(wx.EVT_BUTTON,save) #将save的事件处理绑定到按键上
openButton = wx.Button(bkg,label = 'open')
openButton.Bind(wx.EVT_BUTTON,load)
filename = wx.TextCtrl(bkg) #此函数用于在画布上建立一个文本的输入框
contents = wx.TextCtrl(bkg,style = wx.TE_MULTILINE | wx.HSCROLL) #在画布上建立可换行的文本输入框并且添加了滚动条
#开始布局文本框,左右的布局
hbox = wx.BoxSizer() #开始添加尺寸器,默认为水平
hbox.Add(filename,proportion = 1,flag = wx.EXPAND) #proportion用于设置对象所占的比例,1代表占用剩下的额外空间的所有的空间,flag用来设置图标的属性,wx.EXPAND代表图标可扩展
hbox.Add(saveButton,proportion = 0,flag = wx.LEFT,border = 5) #代表距离左边界的距离为5个像素点(边缘的宽度,间隔)
hbox.Add(openButton,proportion = 0,flag = wx.LEFT,border = 5)
#开始上下的布局
bbox = wx.BoxSizer(wx.VERTICAL) #上下的布局,垂直的布局
bbox.Add(hbox,proportion = 0,flag = wx.EXPAND | wx.ALL,border = 5)
bbox.Add(contents,proportion = 1,flag = wx.EXPAND| wx.LEFT|wx.RIGHT|wx.BOTTOM,border = 5) bkg.SetSizer(bbox)
win.Show()
app.MainLoop()
上面的代码中添加了处理事件的函数,可以将函数绑定到对应的按键上去。本事件用到了对文件的读写的操作。
利用wxpython编写GUI的更多相关文章
- 教程和工具--用wxPython编写GUI程序的
wxPython是个很好的GUI库,对底层的C++库进行了封装,调用起来很方便,尤其是操作前台UI界面和后台多线程,两者配合很方便,做GUI程序最难是写界面尤其是布局. 关于wxPython,自己正在 ...
- LoadRunner利用ODBC编写MySql脚本
最近做了几周的LoadRunner测试,有一些心得,记录下来,以便以后查找. LoadRunner测试数据库是模拟客户端去连接数据库服务器,因此,需要协议(或者说驱动的支持).LoadRunner本身 ...
- 利用反射编写私有 Private 方法的单元测试
利用反射编写私有 Private 方法的单元测试 最近在添加一个新feature时,鉴于要给自己的代码一是增加代码的强壮性,二是增加代码测试的覆盖率.但是遇到了有些方法是 Private 的,但是在调 ...
- 利用java编写的盲注脚本
之前在网上见到一个盲注的题目,正好闲来无事,便用java写了个盲注脚本,并记录下过程中的坑 题目源码: <?php header("Content-Type: text/html;ch ...
- 品味性能之道<九>:利用Loadrunner编写socket性能测试脚本简述
一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socket概述 ...
- Python3使用tkinter编写GUI程序
目录 @(Python3中tkinter写的HTTP测试工具代码支持正则表达式和XPATH) 程序非常简单,暂时只支持GET方法,使用内置库tkinter编写GUI窗口,在Mac下运行效果图如下,wi ...
- Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://bbs.51testing. ...
- Python 利用Python编写简单网络爬虫实例2
利用Python编写简单网络爬虫实例2 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站“http://www.51testing. ...
- 利用Python编写Windows恶意代码!自娱自乐!勿用于非法用途!
本文主要展示的是通过使用python和PyInstaller来构建恶意软件的一些poc. 利用Python编写Windows恶意代码!自娱自乐!勿用于非法用途!众所周知的,恶意软件如果影响到了他人的生 ...
随机推荐
- OpenCV2:第九章 图像比较
一.简介 图像相似度主要是对两幅图像内容的相似程度进行打分,根据分数的高低来判断图像内容的相似程度. 常见的图像比较有两种方法:峰值信噪比PSNR和结构相似性SSIM 二.峰值信噪比PSNR(Peak ...
- Vue之组件的生命周期
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- mybatis-5 手写代理
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Select { public St ...
- jvm 内存溢出 在myeclipse中加大tomcat的jvm内存 java.lang.OutOfMemoryError: PermGen space
使用myeclipse启动两个SSH2的部署在tomcat6下的项目 报出java.lang.OutOfMemoryError: PermGen space 解决办法: 在myeclipse中加大jv ...
- java+selenium+maven+IntelliJ IDEA 搭建简单的UI自动化测试环境
1. 用IntelliJ IDEA新建一个maven工程 2. 在pom.xml中添加依赖: <dependency> <groupId>org.seleniumhq.sele ...
- layui使用小记(持续更新)
关于Select等Form表单元素,在使用的时候部分特性会失效 如select自带的Search功能: 其实在使用Form表单元素的时候,你如果需要layui自带的一些功能(搜索,验证等),请用< ...
- java线程总结--synchronized关键字,原理以及相关的锁
在多线程编程中,synchronized关键字非常常见,当我们需要进行“同步”操作时,我们很多时候需要该该关键字对代码块或者方法进行锁定.被synchronized锁定的代码块,只能同时有一条线程访问 ...
- 【HDU 6000】Wash(贪心)
Problem Description Mr.Panda is about to engage in his favourite activity doing laundry! He's brough ...
- MyBatis 3 学习
MyBatis是一款优秀的持久化框架,支持定制化SQL.存储过程以及高级映射.MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获得结果集.MyBatis可以使用简单的XML或注解来配置和映 ...
- BZOJ 3926: [Zjoi20150]诸神眷顾的幻想乡
3926: [Zjoi20150]诸神眷顾的幻想乡 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 438 Solved: 273 Descripti ...