gpt4 book ai didi

python Tkinter 列表框回调 : passing a class-instance-specific callback

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:20 24 4
gpt4 key购买 nike

奇怪的是:比如说,你在一个类中有一个 tk.Button (RUN),你可以指定一个回调,比如

self.RUN["command"] =  self.run

这是指类内部的一个函数,它可以访问所有成员。本质上,回调看到的是一个类实例。

您还可以创建一个 tk.ListBox。获得选择的机制涉及事件。您不能像上面那样传递类函数的实例。回调只能看到 Tk 中不透明的事件/小部件。

你可以做到

def CurSelect(evt) :
...
lb.bind('<<ListboxSelect>>',CurSelect)

但是没有办法传递超过事件。

那么,当您在主循环中运行多个 ListBox 时,会发生什么?如何将事件/小部件映射到拥有该事件/小部件的类实例?

当然,您可以制作一些全局 map 。 (丑陋,尝试过,我讨厌它。)还有更好的吗?

最佳答案

你可以尝试使用lambda来传递参数。

arguments = []
widget.bind("<>", lambda event, arg=arguments: cur_select(event, arg))

def cur_select(event, arg):
return

此外,Python 函数的命名约定:小写字母,必要时用下划线分隔单词,以提高可读性。

关于python Tkinter 列表框回调 : passing a class-instance-specific callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21654807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com