Python 通过事件传递附加参数_生成?

Python 通过事件传递附加参数_生成?,python,user-interface,tkinter,Python,User Interface,Tkinter,有没有办法通过event_generate()方法传递自定义参数(例如字符串) 问题是我有两个线程。其中一个应该传递另一个中的事件处理程序所需的变量。我已尝试使用附加参数声明eventHandler,例如def refreshCanvas(self、event、param),但无法通过event_generate()传递param 我还尝试将其作为现有参数“state”传递,该参数应该是字符串,但它也不起作用 类生成事件: class GameThread(Thread): def __

有没有办法通过event_generate()方法传递自定义参数(例如字符串)

问题是我有两个线程。其中一个应该传递另一个中的事件处理程序所需的变量。我已尝试使用附加参数声明eventHandler,例如def refreshCanvas(self、event、param),但无法通过event_generate()传递param

我还尝试将其作为现有参数“state”传递,该参数应该是字符串,但它也不起作用

类生成事件:

class GameThread(Thread):
    def __init__(self, gameInstance, gui):
        Thread.__init__(self)

        self.__gameInstance = gameInstance
        gui.event_generate("<<refresh>>", when="tail", state=str(self.__gameInstance.getState()))
类游戏线程(线程):
定义初始化(self、游戏实例、gui):
线程。\uuuu初始化\uuuuu(自)
self.\uu gameInstance=gameInstance
gui.event\u generate(“,when=“tail”,state=str(self.\uu gameInstance.getState()))
假定捕获此事件的类:

class App(ttk.Frame):
    def __init__(self, parent=None):
        ttk.Frame.__init__(self, parent)
        parent.bind("<<refresh>>", self.refreshCanvas)

    def refreshCanvas(self, event):
        #something
        pass
class应用程序(ttk.Frame):
def uuu init uuu(self,parent=None):
ttk.Frame.\uuuuu init\uuuuuu(自,父)
parent.bind(“,self.refreshCanvas)
def刷新画布(自我、事件):
#某物
通过

我建议使用上面提到的数据选项

-数据串 字符串可以是任何值;它指定事件的用户_数据字段。仅对虚拟事件有效。对应于绑定脚本中虚拟事件的%d替换

但是,我发现Python中还没有(请参见:)现在我建议使用类似队列的东西,将数据传递给队列,然后生成事件,并在处理程序方法中从队列中提取数据

编辑:

顺便说一句,一般来说,我会小心使用Tkinter的任何线程。为了安全起见,我建议考虑使用mtTkinter。mtTkinter是Tkinter的包装器,使其具有线程安全性。

相关: