python基础课程_2学习笔记3:图形用户界面

图形用户界面

丰富的平台

写作Python GUI程序前,须要决定使用哪个GUI平台。

简单来说,平台是图形组件的一个特定集合。能够通过叫做GUI工具包的给定Python模块进行訪问。

工具包

描写叙述

Tkinter

使用Tk平台。非常easy得到。

半标准。

wxpython

基于wxWindows

跨平台越来越流行。

PythonWin

仅仅能在Windows上使用。

使用了本机的Windows GUI功能。

JavaSwing

仅仅能用于Jython。使用本机的Java GUI

PyGTK

使用GTK平台,在linux上非常流行。

PyQt

使用Qt平台。跨平台。

 

每一个工具包都有利弊,但非常大程度上取决于个人喜好。

下面以wxPython为例。

下载和安装wxPython

下载地址:

http://wxpython.org/download.php

注意:假设python64位的,则必须选用64位的wxPython,否则即便是64位的操作系统也应该选用32位的wxPython

 

建议下载wxPython的演示版本号,并研究它。

创建演示样例GUI应用程序

開始

 

開始须要导入wx模块:

import wx

 

编写wxPython程序的方法非常多,但不可避免的事情是创建应用程序对象。主要的应用程序类是ex.App,它负责幕后全部的初始化。

最简单的wxPython程序应该像以下这样:

import wx

app=wx.App()

app.MainLoop()

由于没有不论什么用户能够交互的窗体,程序会立马退出。

 

wx包中的方法都是以大写字母开头的,这和python的习惯是相反的。这样做的原因是这些方法名和基础的c++wxWidgets中的方法名都是相应的。虽然没有正式的规则反对方法或者函数名以大写字母开头,但规范的做法是为类保留这种名字。

 

窗体和组件

窗体(Window)也称为框架(Frame),它仅仅是wx.Frame类的实例。

wx框架中的部件都是由它们的父部件作为构造函数的第一个參数创建的。假设正在创建一个单独的窗体,就不须要考虑父部件。使用None就可以。并且在调用app.MainLoop()前须要调用窗体的Show方法——否则它会一直隐藏。

 

import wx

 

app=wx.App()

win=wx.Frame(None)

win.Show()

app.MainLoop()

 

运行结果:

 

 

添加button:

import wx

 

app=wx.App()

win=wx.Frame(None)

btn=wx.Button(win)

win.Show()

app.MainLoop()

运行结果:

 

 

标签、标题和位置

能够在创建部件的时候使用构造函数的label參数设定标签。用title设定标题。

import wx

 

app=wx.App()

win=wx.Frame(None,title="Simple Editor")

 

loadButton=wx.Button(win,label='Open')

saveButton=wx.Button(win,label='Save')

 

win.Show()

app.MainLoop()

 

运行结果:

 

 

应该有两个button,实际仅仅有一个是由于还有一个被隐藏掉了。

 

 

调节button位置:

import wx

 

app=wx.App()

win=wx.Frame(None,title="Simple Editor",size=(410,335))

win.Show()

 

loadButton=wx.Button(win,label='Open',pos=(225,5),size=(80,25))

saveButton=wx.Button(win,label='Save',pos=(315,5),size=(80,25))

filename=wx.TextCtrl(win,pos=(5,5),size=(210,25))

contexts=wx.TextCtrl(win,pos=(5,35),size=(390,260),style=wx.TE_MULTILINE | wx.HSCROLL)

 

app.MainLoop()

 

运行结果:

 

 

更智能的布局

在调整窗体大小时。应该能保证窗体中的组件也会随之调整大小和位置。

 

wx内进行布局的最简单方法是使用尺寸器(sizer),最easy使用的工具就是wx.BoxSizer

import wx

 

app=wx.App()

win=wx.Frame(None,title="Simple Editor",size=(410,335))

bkg=wx.Panel(win)

 

loadButton=wx.Button(bkg,label='Open')

saveButton=wx.Button(bkg,label='Save')

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)

hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)

hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)

 

vbox=wx.BoxSizer(wx.VERTICAL)

vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)

vbox.Add(contents,proportion=1,flag=wx.EXPAND |

         wx.LEFT | wx.BOTTOM | wx.RIGHT,border=5)

 

bkg.SetSizer(vbox)

win.Show()

app.MainLoop()

 

运行结果:

 

拉伸效果

 

事件处理

GUI术语中,用户运行的动作叫做事件(event

让程序注意这些事件并作出反应。能够将函数绑定到所涉及的事件可能发生的组件上达到这个效果。当事件发生时。函数会被调用。利用部件的Bind方法能够将事件处理函数链接到给定的事件上。

完毕了的程序

代码:

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=(410,335))

 

bkg=wx.Panel(win)

 

loadButton=wx.Button(bkg,label='Open')

loadButton.Bind(wx.EVT_BUTTON,load)

 

saveButton=wx.Button(bkg,label='Save')

saveButton.Bind(wx.EVT_BUTTON,save)

 

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)

hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)

hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)

 

vbox=wx.BoxSizer(wx.VERTICAL)

vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)

vbox.Add(contents,proportion=1,flag=wx.EXPAND |

         wx.LEFT | wx.BOTTOM | wx.RIGHT,border=5)

 

bkg.SetSizer(vbox)

win.Show()

app.MainLoop()

 

输入地址,点击openbutton,以下显示文件内容。

在以下区域编辑后点击savebutton关闭程序。

运行1步骤可看到刚才编辑的效果。

 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/hrhguanli/p/4639428.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/397867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea ssm打war包_IDEA下从零开始搭建SpringBoot工程

SpringBoot的具体介绍可以参看其他网上介绍,这里就不多说了,就这几天的学习,个人理解,简而言之:如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友…

dataframe 众数的方法_学习数据分析数据方法论 [描述性统计分析]

数理统计:数理统计是以概率论为基础,研究社会和自然界中大量随机现象数量变化基本规律的一种方法。分为:描述统计(描述统计的任务是搜集资料,进行整理、分组,编制次数分配表,绘制次数分配曲线,计…

c语言高级语言期中测试答案,上海理工大学C语言2011期中试题和答案

C语言2010/2011学年 第二学期 期中测试高级语言程序设计(C)试卷 A □BA1. 输入一行字符&#xff0c;统计其中的英文字母个数。#include void main(){ char ch;int n0;printf(“Input a string:\n”);while(1){ chgetchar();if (ch \n ) break;if (ch> a && ch< z…

如何构建ASP.NET MVC4JQueryAJaxJSon示例

背景&#xff1a; 博客中将构建一个小示例&#xff0c;用于演示在ASP.NET MVC4项目中&#xff0c;如何使用JQuery Ajax。 直接查看JSon部分 步骤&#xff1a; 1&#xff0c;添加控制器(HomeController)和动作方法(Index),并为Index动作方法添加视图(Index.cshtml),视图中HTML如…

echarts 有引导线和内部文字_点、线、面构图的异同以及相互转化

点、线、面构图既有相似性&#xff0c;又有差异性。相似的是都有对齐、强调、群组、重复、突出层次的作用&#xff0c;不同的是点的特点是聚焦、线的特点是运动和方向性&#xff0c;面的特性是体量感、稳定性。点的情感最弱&#xff0c;线、面的情感要比点丰富。一、点、线、面…

《Python黑帽子:黑客与渗透测试编程之道》 Web攻击

Web的套接字函数库&#xff1a;urllib2 一开始以urllib2.py命名脚本&#xff0c;在Sublime Text中运行会出错&#xff0c;纠错后发现是重名了&#xff0c;改过来就好&#xff1a; #!/usr/bin/python #codingutf-8 import urllib2url "http://www.baidu.com"headers …

vCenter Converter Standalone使用文档

文档目的能够使用vCenter Converter Standalone 将物理机操作系统迁移到虚拟机操作系统基础知识vCenter Converter Standalone 能将物理机上的操作系统、VMware虚拟机上的操作系统或者Hype-V 上的虚拟机操作系统迁移到VMware上。系统环境操作系统&#xff1a;Windows Server 20…

1093芯片做正弦波逆变器_正弦波逆变器中的SPWM调制(钟任生)

欢迎加入技术交流QQ群(2000人)&#xff1a;电力电子技术与新能源 905723370高可靠新能源行业顶尖自媒体在这里有电力电子、新能源干货、行业发展趋势分析、最新产品介绍、众多技术达人与您分享经验&#xff0c;欢迎关注我们&#xff0c;搜索微信公众号&#xff1a;电力电子技术…

android 手机短信恢复,安卓手机短信删除了怎么恢复?简单恢复的方法

原标题&#xff1a;安卓手机短信删除了怎么恢复&#xff1f;简单恢复的方法安卓手机短信删除了怎么恢复&#xff1f;手机短信是生活中不经常使用到&#xff0c;但是依然是十分重要的存在&#xff0c;因为我们现在比较喜欢用社交软件与别人进行交流&#xff0c;但是在一些相对重…

bash下个人习惯的一些文件设置

2019独角兽企业重金招聘Python工程师标准>>> bash_profile export PATH/usr/local/bin:$PATH export EDITORviinputrc set editing-mode vi #set editing-mode emacs set show-all-if-ambiguous on set completion-ignore-case on set meta-flag on set conver…

docker打包镜像上传_Jenkins | 一键打包部署Spring Boot 应用的Docker镜像

一、前言1、本文主要内容将在项目中实际使用到的相关东西整理记录一波&#xff0c;同时可以方便其他同学在使用到的时候参考一下(自己也备忘)&#xff0c;有不对的地方&#xff0c;欢迎指出~~Docker部署SpringBoot 项目通用Dockerfile文件、脚本Jenkins新建任务图文详解3、本文…

android 发送短信 广播 demo,向Android模拟器打电话发短信的简单方法

在开发android应用程序时&#xff0c;有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应。譬如编写一个广播接收器&#xff0c;来提示用户有短信收到或者处理短信&#xff0c;就需要向该手机发送短信来进行测试。这里介绍一种简单的向android模拟器打电话发短…

android 隐藏键盘时ui延迟恢复,android 软键盘的显示与隐藏问题的研究

在android中&#xff0c;常常会和输入法的软件键盘交互。在Manifest文件中&#xff0c;系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式。该属性提供了Activity的window与软键盘的window交互的方式。这里的属性设置有双方面的影响&#xff1a;1.软键盘的显…

天才基本法_《天才基本法》强推!年度神仙小说,看完这本书我竟然爱上了数学...

《天才基本法》——长洱小说文案元宝的书评这个真的是本年度的神仙小说&#xff0c;讲述了女主回到少女时代&#xff0c;可以和他一直暗恋的数学天才重来一遍。女主让男主改变了觉得她碌碌无为的看法&#xff0c;也改变了自己的人生。本书最大的主角其实是数学&#xff01;天知…

千年鸿蒙 盼尔来兮是什么意思,鸿蒙是什么意思_鸿蒙的意思和出处_我爱历史网...

鸿蒙&#xff0c;是一个汉语词语&#xff0c;亦作“鸿濛”。中国神话传说的远古时代&#xff0c;传说在盘古开天辟地之前&#xff0c;世界是一团混沌状&#xff0c;因此把那个时代称作鸿蒙时代&#xff0c;后来该词也常被用来泛指远古时代。引证解释亦作“鸿濛”。1、宇宙形成前…

在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

from:http://m.blog.csdn.net/article/details?id51075023 在VS2015中先创建C#项目&#xff0c;然后再创建要编写的动态库DLL项目&#xff0c;这样做的好处是整个解决方案的编程环境是C#模式&#xff0c;这样就可以有很多智能的提示或快捷的编程方式在整个解决方案中都可以使用…

(转)CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景

CocosCreator零基础制作游戏《极限跳跃》二、制作游戏开始场景 我们刚刚分析了《极限跳跃》这款游戏&#xff0c;下面我们开始制作第一个游戏场景&#xff0c;也就是游戏的开始场景。 首先&#xff0c;打开CocosCreator&#xff0c;新建HelloWorld项目。选择项目路径&#xff0…

连接池超时配置_HttpClient连接池的一些思考

前言使用apache的httpclient进行http的交互处理已经很长时间了&#xff0c;而httpclient实例则使用了http连接池&#xff0c;想必大家也没有关心过连接池的管理。事实上&#xff0c;通过分析httpclient源码&#xff0c;发现它很优雅地隐藏了所有的连接池管理细节&#xff0c;开…

视图和模型变换

视图变换&#xff0c;是指变换照相机的位置&#xff0c;角度。 模型变换&#xff0c;是指变换被照物体的位置&#xff0c;角度。 这两个变换&#xff0c;都会影响最终图形中&#xff0c;物体的位置&#xff0c;角度。而这两个变换&#xff0c;可以达到相同的效果。比如&#x…

鸿蒙os全面升级,华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然...

原标题&#xff1a;华为突然宣布&#xff0c;鸿蒙OS正式版6月底全面升级&#xff0c;幸福来得太突然摘要&#xff1a;早在今年2月华为Mate X2折叠屏新品发布会上&#xff0c;余承东曾表示&#xff0c;鸿蒙OS正式版将于今年4月份全面上线。或许是因为华为宣布卖车分散了很多的精…