python-闭包用法(76)

本文通过使用Python的Tkinter库创建图形用户界面,展示了如何利用偏函数为多个按钮分配不同的函数调用,实现按钮点击后执行特定任务。通过内部函数和闭包的运用,实现了更灵活的代码结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# 转自https://www.jianshu.com/c/00c61372c46a网址
# 下面的代码用到了《66-偏函数应用:简单的图形窗口》
# 图形窗口上的按钮有个command选项,其实它就是一个函数。如下:
import tkinter
from functools import partial

def hello():
    lb.config(text="Hello China!")

def welcome():
    lb.config(text="Hello Tedu!")

root = tkinter.Tk()
lb = tkinter.Label(text="Hello world!", font="Times 26")
MyBtn = partial(tkinter.Button, root, fg='white', bg='blue')
b1 = MyBtn(text='Button 1', command=hello)
b2 = MyBtn(text='Button 2', command=welcome)
b3 = MyBtn(text='quit', command=root.quit)
lb.pack()
b1.pack()
b2.pack()
b3.pack()
root.mainloop()
# 按下Button 1和Button 2就会执行hello和welcome两个函数。这两个函数非常类似,如果有10个按钮,并且都是类似的呢?
# 换成内部函数、闭包的的语法如下:

import tkinter
from functools import partial

def hello(word):
    def welcome():
        lb.config(text="Hello %s!" % word)
    return welcome  # hello函数的返回值还是函数

root = tkinter.Tk()
lb = tkinter.Label(text="Hello world!", font="Times 26")
MyBtn = partial(tkinter.Button, root, fg='white', bg='blue')
b1 = MyBtn(text='Button 1', command=hello('China'))
b2 = MyBtn(text='Button 2', command=hello('Tedu'))
b3 = MyBtn(text='quit', command=root.quit)
lb.pack()
b1.pack()
b2.pack()
b3.pack()
root.mainloop()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值