python(9): GUI
实例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的更多相关文章
- Python 图形 GUI 库 pyqtgraph
原文 Python 图形 GUI 库 pyqtgraph pyqtgraph 是纯 Python 图形 GUI 库,基于PyQT4 /pyside和NumPy.它主要目的用于在数学/科学/工程中.M ...
- 关于python写GUI桌面应用的一些研究结果
研究了一下python开发GUI桌面应用的解决方案,研究结果记录如下: EasyGui:控件极为简单,连个基本的grid.list组件都没有,不适合商用,甚至是普通的应用都不行,放弃! Tkinter ...
- 《Python 数据库 GUI CGI编程》
本文地址:http://www.cnblogs.com/aiweixiao/p/8390417.html 原文地址 点击关注微信公众号 wenyuqinghuai 1.写在前边 上一次,我们介绍了Py ...
- Python的GUI编程(TK)
TK在大多数 Unix平台.Windows平台和Macintosh系统都是预装好的,TKinter 模块是 Tk GUI 套件的标准Python接口.可实现Python的GUI编程. Tkinter模 ...
- Python的 GUI 框架
Python的 GUI 框架 Tkinter Python内嵌的gui环境,使用TCL实现,python IDLE由Tkinter实现 历史悠久,perl中有对应的perlTk.Python标准安装包 ...
- 以Tkinter模块来学习Python实现GUI(图形用户界面)编程
tk是什么:它是一个图形库,支持多个操作系统,使用tcl语言开发的.tkinter是Python内置的模块, 与tk类似的第三方图形库(GUI库)还有很多,比如:Qt,GTK,wxWidget,wxP ...
- Python开发GUI工具介绍,实战:将图片转化为素描画!【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- Python开发GUI工具介绍,实战:将图片转化为素描画!
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- Python开发GUI实战:图片转换素描画工具!
奋斗没有终点 好好学习72变,因为将来 没有人能替你阻挡81难 . 生如蝼蚁,当有鸿鹄之志: 命如纸薄,应有不屈之心 . 今天被这句话触动了,所以开篇分享给大家.鸡汤有毒,但有时大家却靠它激励自己 ...
- Python笔记_第四篇_高阶编程_GUI编程之Tkinter_1.使用Python进行GUI编程的概述
1. GUI概述: GUI全称为Graphical User Interface,叫做图形用户界面,也是一种交互方式(Interaction).早期计算机使用的命令行界面(command-line i ...
随机推荐
- Django REST framework 第六章 ViewSets & Routers
REST framework包含了一个可以处理ViewSets的抽象, 它允许开发人员专注于API的状态跟交互进行建模,并使得URL构建结构基于通用的约定自动处理. ViewSet类跟View类几乎相 ...
- 20165231 2017-2018-2《Java程序设计》课程总结
每周作业链接汇总 预备作业一:我期待的师生关系 预备作业二:学习基础和C语言基础调查 预备作业三:linux安装及学习 第一周作业:初识JAVA,注册码云并配置Git 第二周作业:JAVA基本语法,标 ...
- vue中过滤器filters的使用
组件内写法 filters:{ filter:function(data,arg1,arg2){ return .... } } 全局写法 filters('filter',function(data ...
- sorter函数参数设置
python内置sorted函数排完序生成一个新列表,而列表list.sorted则是直接在原列表上修改 sorted默认排序是正序,即从小到大. 若想倒着排序,则reverse=True 当需要排序 ...
- 数字图像处理的Matlab实现(1)—绪论
第1章 绪论 1.1 什么是数字图像处理 一幅图像可以定义为一个二维函数\(f(x,y)\),这里的\(x\)和\(y\)是空间坐标,而在任意坐标\((x,y)\)处的幅度\(f\)被称为这一坐标位置 ...
- Angular 创建组件
创建组件 0 命令创建 1 创建组件 定义hello.component.ts组件 在app.module.ts中引用并添加到declarations声明中 在app.component.html中使 ...
- Oracle服务器定位CPU使用率高的瓶颈(SQL)
1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据时,发现userCPU高达98%!! 保持top的状态下,按shift+p,可以将所有进程按CPU使用率 ...
- 是armhf,还是armel?
本文译至:https://blogs.oracle.com/jtc/entry/is_it_armhf_or_armel ARM处理器有各种品牌和规格,其中一部分的原因涉及到市场问题,成本,大小和功耗 ...
- HDU 1250
简单大数 (要压位,不然会超内存) #include<iostream> #include<cstdio> #include<cstring> #include&l ...
- Linux IO实时监控iostat命令
简介 iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息.用户可以通过指定统计的次数和时间 ...