实例1: 对输入的所有数字求和, 最后以. 结束输入

def fun():
list1=[]
print('input a number:')
while True:
num=input()
if num=='.':
break
list1.append(eval(num))
sum1=sum(list1)
return sum1

程序简单, 但是输入输出不友好, 怎么做一个友好界面? GUI

GUI的设计需要用到面向对象设计

以按钮(button)为例, quit按钮有很多属性, 包括label(按钮文字), size, pos,font....

方法也很多, 包括setlabel(设置按钮的文字), setdefualt, enable(把按钮设置为可以操作的状态)..

实例: 创建一个简单的wxpython程序

import wx
app=wx.App() #创建一个应用程序对象
frame=wx.Frame(None,title='hello world!') # 创建一个frame对象
# frame是GUI组件的容器, 没有就无法显式GUI了
frame.Show(True) # 显示窗体
app.MainLoop() # 必须写, 否则没有响应

得到一个窗体, 名字为hello,world!

上述程序也可以改写为:

import wx
class myapp(wx.App):
def Oninit(self): # 在事件一开始Mainloop就会被调用
frame=wx.Frame(None,title='hello,world!')
frame.Show()
return True
if __name__=='__main__':
app=myapp()
app.MainLoop()

框架中的组件:

组件容器(containers) -- 用于容纳其他组件, 例如wx.Panel

动态组件(dynamic widgets) --可以被用户编辑, wx.Button, wx.TextCtrl, wx.ListBox

静态组件(Static Widgets)-- 显示信息用, 不能被用户编辑, wx.StaticBitmap, wx.StaticText, wx.StaticLine

其他组件: wx.ToolBar, wx.MenuBar, wx.StatusBar

实例

del app
import wx
class frame1(wx.Frame):
def __init__(self,superior):
wx.Frame.__init__(self,parent=superior,title='Example',
pos=(100,200),size=(350,200))
panel=wx.Panel(self) # 新增文本输入框的位置, 文字内容
text1=wx.TextCtrl(panel,value='hello,world!',size=(350,200)) if __name__=='__main__':
app=wx.App()
frame=frame1(None)
frame.Show(True)
app.MainLoop()

TextControl 的父窗口是Panel, panel 的父窗口是frame

提示:在Anaconda中运行程序如果出现“PyNoAppError: The wx.App object must be created first!”这样的错误,请在Python Shell中执行del app即可!

事件处理: event handling

事件: 移动鼠标Onmove() , 按下左键, 单击按钮等...

del app
import wx
class frame1(wx.Frame):
def __init__(self,superior):
wx.Frame.__init__(self,parent=superior,title='Example',
pos=(100,200),size=(350,200))
self.panel=wx.Panel(self) # 新增文本输入框的位置, 文字内容
self.panel.Bind(wx.EVT_LEFT_UP,self.OnClick)
# 将鼠标左键抬起事件绑定到 OnClick子类, 当左键抬起, OnClick方法就会被调用
def OnClick(self,event):
posm=event.GetPosition() # 获得鼠标单击的位置
wx.StaticText(parent=self.panel,label='hello, world!',pos=(posm.x,posm.y))
# 在鼠标单击的位置放置静态文本控件hello world if __name__=='__main__':
app=wx.App()
frame=frame1(None)
frame.Show(True)
app.MainLoop()

python(9): GUI的更多相关文章

  1. Python 图形 GUI 库 pyqtgraph

    原文  Python 图形 GUI 库 pyqtgraph pyqtgraph 是纯 Python 图形 GUI 库,基于PyQT4 /pyside和NumPy.它主要目的用于在数学/科学/工程中.M ...

  2. 关于python写GUI桌面应用的一些研究结果

    研究了一下python开发GUI桌面应用的解决方案,研究结果记录如下: EasyGui:控件极为简单,连个基本的grid.list组件都没有,不适合商用,甚至是普通的应用都不行,放弃! Tkinter ...

  3. 《Python 数据库 GUI CGI编程》

    本文地址:http://www.cnblogs.com/aiweixiao/p/8390417.html 原文地址 点击关注微信公众号 wenyuqinghuai 1.写在前边 上一次,我们介绍了Py ...

  4. Python的GUI编程(TK)

    TK在大多数 Unix平台.Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口.可实现Python的GUI编程. Tkinter模 ...

  5. Python的 GUI 框架

    Python的 GUI 框架 Tkinter Python内嵌的gui环境,使用TCL实现,python IDLE由Tkinter实现 历史悠久,perl中有对应的perlTk.Python标准安装包 ...

  6. 以Tkinter模块来学习Python实现GUI(图形用户界面)编程

    tk是什么:它是一个图形库,支持多个操作系统,使用tcl语言开发的.tkinter是Python内置的模块, 与tk类似的第三方图形库(GUI库)还有很多,比如:Qt,GTK,wxWidget,wxP ...

  7. Python开发GUI工具介绍,实战:将图片转化为素描画!【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  8. Python开发GUI工具介绍,实战:将图片转化为素描画!

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  9. Python开发GUI实战:图片转换素描画工具!

    奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . ​ 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...

  10. Python笔记_第四篇_高阶编程_GUI编程之Tkinter_1.使用Python进行GUI编程的概述

    1. GUI概述: GUI全称为Graphical User Interface,叫做图形用户界面,也是一种交互方式(Interaction).早期计算机使用的命令行界面(command-line i ...

随机推荐

  1. mfc调用WPFDLL

    1.修改MFC项目属性支持CLR 2.打开vcxproj,修改<PropertyGroup Label="Globals"> <PropertyGroup Lab ...

  2. 用FileZilla链接Linux服务器

    这里以CentOS举例 用SSH文件传输端口,默认为22端口,用netstat -antulp | grep ssh命令查看!

  3. 20165234 《Java程序设计》第三周学习总结

    第三周学习总结 教材学习内容总结 第四章 编程语言的几个发展阶段: 面向机器语言 面向过程语言 面向对象语言 类 1. 类声明: class People { ... } class 动物 { ... ...

  4. [转] 理解NLP中的卷积&&Pooling

    转自:http://blog.csdn.net/malefactor/article/details/51078135 CNN是目前自然语言处理中和RNN并驾齐驱的两种最常见的深度学习模型.图1展示了 ...

  5. SQL Server - GO

    GO GO是批处理的标志,是一条或多条SQL语句的集合,SQL Server将批处理语句编译成一个可执行单元,此单元称为执行计划. GO语句把程序分成一个个代码块,即使一个代码块执行错误,它后面的代码 ...

  6. 【MySQL】CentOS下安装及搭建主从复制

    CentOS下安装MySQL 1,wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm 2,rpm -ivh m ...

  7. 【转】shell速查表

    shell速查表 转自:https://www.jianshu.com/p/a98a334bfb25 1. 变量 #!/bin/bash msg="hello world" ech ...

  8. 二层环路保护,RRPP多环的配置

    作者:邓聪聪 组网需求: 局域网中,由A/B/C/D构成RRPP域1换网络结构,要求环网机构中的任意两条线路中断都不能影响业务. 配置思路: 环路由两部分组成,ring1.ring2,B为环1的主节点 ...

  9. mutt+msmtp实现在shell环境中发送电子邮件

    作者:邓聪聪 为了自动化接收服务端的文件备份信息,利用mutt+msmtp在shell环境中发送电子邮件,轻松高效的完成运维工作. 下载msmtp wget http://downloads.sour ...

  10. 024_nginx之backlog坑

    一. 线上碰到一个nginx调优的一个设置,即listen后面设置 listen 80 backlog=1024; 但是多个域名都设置这个值的时候就会出现以下的提示重复报错. 关于backlog参数的 ...