tkinter 4 command binding 命令绑定

本文详细介绍了如何在Tkinter中使用回调函数与组件交互,包括如何定义和绑定带参数的回调函数,以及command属性的局限性。随后提到了eventbinding作为解决方案,以处理更广泛的键盘事件。
摘要由CSDN通过智能技术生成

一般而言,与应用程序的交互是通过鼠标或者键盘操作来完成的。在tkinter中,通过将一个回调函数与具体键鼠事件绑定,从而在指令发生时,回调函数被自动调用,实现与tkinter窗口的交互。具体在tkinter中的组件,可以使用command属性来绑定一个具体的回调函数。步骤如下:

        1、定义一个回调函数

        2、将回调函数的名字赋值给组件中的command.

如下:

def button_clicked():
    print('Button clicked')



ttk.Button(root, text='Click Me',command=button_clicked)

完整的可执行代码如下:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def button_clicked():
    print('Button clicked')


button = ttk.Button(root, text='Click Me', command=button_clicked)
button.pack()

root.mainloop()

那么,如果需要给回调函数传参数怎么办呢?可以通过lambda匿名函数来实现。

        1、定义带参回调函数

        2、command绑定lambda函数

如下:

def callback_function(args):
    # do something


ttk.Button(
    root,
    text='Button',
    command=lambda: callback(args)
)

完整的可执行代码 :

import tkinter as tk
from tkinter import ttk

root = tk.Tk()


def select(option):
    print(option)


ttk.Button(root, text='Rock', command=lambda: select('Rock')).pack()
ttk.Button(root, text='Paper',command=lambda: select('Paper')).pack()
ttk.Button(root, text='Scissors', command=lambda: select('Scissors')).pack()

root.mainloop()

不过,command binding有如下一些限制。

        1、不是所有的组件都可以command binding

        2、command binding可以不能处理如return等一些键盘事件,有一定局限

那这个可以解决吗?当然,由此引申出了event binding。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值