如何将参数从Mouse-Event传递给函数?

时间:2016-12-26 21:18:59

标签: python tkinter parameter-passing mouseevent

我是Python新手,我遇到以下问题:

这是我用来调用函数 mouseclick 的代码。但 mouseclick 需要参数 counter (在我的例子中)。 如何通过 计数器 鼠标点击 点击标签? 此代码只传递参数 event 我在哪里可以写第二个参数来传递?

label1.bind('<Button-1>', mouseclick)

我试过了:

label1.bind('<Button-1>', mouseclick, counter)

和此:

label1.bind('<Button-1>', mouseclick(counter))

但它没有用。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

将变量与函数关联的常用方法是使用类实例。 python类方法的优点是它们保留了对它们实例的引用,因此可以在以后调用它们而无需专门传递实例。

class Counter:

    def __init__(self):
        self.counter = 0

    def on_click(self, event):
        self.counter += 1

mouseclick = Counter()
label1.bind('<Button-1>', mouseclick.on_click)

答案 1 :(得分:1)

如果您正在使用Tkinter,则可以向Controller#action函数添加变量counter,如下所示:

mouseclick

答案 2 :(得分:0)

轻松使用lambda,您可以将函数调用mouseclick绑定到参数,定义&#34;内联&#34;匿名函数

label1.bind('<Button-1>', lambda event : mouseclick(event,counter))