目标:

  1.编写一个gui,生成按钮

  2.通过偏函数,生成按钮

  3.通过装饰器,实现按钮输出信息功能

1.使用Tkinter,创建一个按钮

代码如下:

handetiandeMacBook-Pro:~ xkops$ cat button.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- import Tkinter
#定义一个窗口
root = Tkinter.Tk()
#定义一个按钮
b1 = Tkinter.Button(root, foreground='white', background='blue', text='Button1') #包装
b1.pack() root.mainloop()

•运行代码,效果如下图

2.通过使用偏函数定义按钮(偏函数定义一些相通部分的内容)

代码如下:

handetiandeMacBook-Pro:~ xkops$ cat button.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- import Tkinter
from functools import partial root = Tkinter.Tk()
#使用偏函数定义相同的内容
MyButton = partial(Tkinter.Button, root, foreground='white', background='blue') b1 = Tkinter.Button(root, foreground='white', background='blue', text='Button1')
b2 = MyButton(text='Button2')
b3 = MyButton(text='Button3')
b4 = MyButton(text='quit') b1.pack()
b2.pack()
b3.pack()
b4.pack() root.mainloop()

•运行代码,测试效果

3.定义函数,实现点击button2按钮,输出"Hello,world"功能,点击quit按钮,关闭窗口功能。

代码如下:

handetiandeMacBook-Pro:~ xkops$ cat button.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- import Tkinter
from functools import partial def greet():
print "Hello, world"
root = Tkinter.Tk() MyButton = partial(Tkinter.Button, root, foreground='white', background='blue') b1 = Tkinter.Button(root, foreground='white', background='blue', text='Button1')
b2 = MyButton(text='Button2', command=greet)
b3 = MyButton(text='Button3')
b4 = MyButton(text='quit', command=root.quit) b1.pack()
b2.pack()
b3.pack()
b4.pack() root.mainloop()

•运行代码,点击Button2和quit按钮查看效果

4.通过编写装饰器实现,点击不同按钮,打印不同的信息。

代码如下:

handetiandeMacBook-Pro:~ xkops$ cat button.py

#!/usr/bin/env python
# -*- coding: utf-8 -*- import Tkinter
from functools import partial def greet(word):
def welcome():
print "Hello, %s" % word
return welcome root = Tkinter.Tk() MyButton = partial(Tkinter.Button, root, foreground='white', background='blue') b1 = Tkinter.Button(root, foreground='white', background='blue', text='Button1')
b2 = MyButton(text='Button2', command=greet('world'))
b3 = MyButton(text='Button3', command=greet('Python'))
b4 = MyButton(text='quit', command=root.quit) b1.pack()
b2.pack()
b3.pack()
b4.pack() root.mainloop()

•运行代码,测试效果,点击Button2,后台输出"Hello, world", 点击Button3后台输出"Hello, Python"

Python偏函数实例的更多相关文章

  1. python基础——实例属性和类属性

    python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...

  2. python 发送邮件实例

    留言板回复作者邮件提醒 -----------2016-5-11 15:03:58-- source:python发送邮件实例

  3. python Cmd实例之网络爬虫应用

    python Cmd实例之网络爬虫应用 标签(空格分隔): python Cmd 爬虫 废话少说,直接上代码 # encoding=utf-8 import os import multiproces ...

  4. Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取

    很多网页的信息都是通过异步加载的,本文就举例讨论下此类网页的抓取. <工作细胞>最近比较火,bilibili 上目前的短评已经有17000多条. 先看分析下页面 右边 li 标签中的就是短 ...

  5. Python爬虫实例:爬取猫眼电影——破解字体反爬

    字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...

  6. Python爬虫实例:爬取豆瓣Top250

    入门第一个爬虫一般都是爬这个,实在是太简单.用了 requests 和 bs4 库. 1.检查网页元素,提取所需要的信息并保存.这个用 bs4 就可以,前面的文章中已经有详细的用法阐述. 2.找到下一 ...

  7. python 创建实例--待完善

    今天好好琢磨一下 python 创建实例的先后顺序 一. 就定义一个普通类 Util (默认)继承自 object,覆写 new ,init 方法 class Util(object): def __ ...

  8. pcapng文件的python解析实例以及抓包补遗

    为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生.关于它的介绍详见<PCAP Next Generation Dump File Format> 当前的w ...

  9. 生产消费者模式与python+redis实例运用(中级篇)

    上一篇文章介绍了生产消费者模式与python+redis实例运用(基础篇),但是依旧遗留了一个问题,就是如果消费者消费的速度跟不上生产者,依旧会浪费我们大量的时间去等待,这时候我们就可以考虑使用多进程 ...

随机推荐

  1. ionic 字体的导入方法

    更换字体 这是第一个图标(蜜蜂推荐)是撸主原来的图标 这是UI给的效果图的图标,显然默认的图标不符合要求 查找图标所在的样式,在tabs.html文件中 <ion-tabs class=&quo ...

  2. Tomcat6.0数据源配置

    涉及context.xml和server.xml http://blog.csdn.net/onlymilan/article/details/5493485

  3. ORACLE调度之基于时间的调度(一)【weber出品】

    一.调度的概述 这里我看到一篇对调度的概述觉得描述的比我好,但仅限于概述部分,其他部分我觉得我讲的比他好,于是发生以下事情: ************************华丽的转载******** ...

  4. 13 hbase连接

    Configuration conf=new Configuration(); String zookeeper=""; String clientport="; Str ...

  5. 武汉科技大学ACM :1005: A+B for Input-Output Practice (V)

    Problem Description Your task is to calculate the sum of some integers. Input Input contains an inte ...

  6. epoll模型的et模式和lt模式

    http://www.cppblog.com/peakflys/archive/2012/08/26/188344.html    评论区讨论,唐诗! http://www.cnblogs.com/e ...

  7. ASP.NET常用技术之Cookie

    cookie是一小段的文本信息(多数浏览器限制cookie最大字节数为4096字节),在浏览器和服务器之间随用户请求而传递(用户访问网站,没有设置cookie限制范围情况下,无论请求那个页面,浏览器和 ...

  8. Android Framework------之ActivityManagerService与Activity之间的通信

    研究Android系统的童鞋,想必都已经了解一个Activity的启动过程了.而且在网上,关于Activity的启动的文章非常多,很容易就能找到的.这篇文章的重点放在ActivityManagerSe ...

  9. C 中typedef 函数指针的使用

    类型定义的语法可以归结为一句话:只要在变量定义前面加上typedef,就成了类型定义.这儿的原本应该是变量的东西,就成为了类型. int integer;     //整型变量int *pointer ...

  10. 利用libpcap抓取QQ号码信息

    最近想在QQ登录时把QQ号码信息记录下来,百度了很多都没有找到具体方式,最近用Wireshark分析报文+libpcap库嗅探实现了这个小功能. 通讯背景: QQ客户端在通讯时使用UDP协议,其中数据 ...