Python偏函数实例

目标:

  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"

 

posted @   xkops  阅读(629)  评论(1编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示