Python Safetkinter运行时错误:递归限制

Python Safetkinter运行时错误:递归限制,python,multithreading,python-3.x,tkinter,ttk,Python,Multithreading,Python 3.x,Tkinter,Ttk,因此,我一直在尝试为tkinter(我正在使用Python3.3)获取一个线程安全适配器,以帮助我的一些项目。我偶然发现了一个名为“safetkinter”(recipe)的配方,它承诺将所有gui调用路由到主线程。我试过了,但是我遇到了一个运行时错误问题,它不断地出现,破坏了我的努力。我试过各种各样的方法来修复它,但运气不好。所以这里有人知道让它工作的诀窍吗?(另外,safetkinter使用了threadbox配方和依赖关系的affinity配方。我还认为affinity模块是这个问题的罪魁

因此,我一直在尝试为tkinter(我正在使用Python3.3)获取一个线程安全适配器,以帮助我的一些项目。我偶然发现了一个名为“safetkinter”(recipe)的配方,它承诺将所有gui调用路由到主线程。我试过了,但是我遇到了一个运行时错误问题,它不断地出现,破坏了我的努力。我试过各种各样的方法来修复它,但运气不好。所以这里有人知道让它工作的诀窍吗?(另外,safetkinter使用了threadbox配方和依赖关系的affinity配方。我还认为affinity模块是这个问题的罪魁祸首。)

我用来测试模块的脚本:

import safetkinter as tkinter

class Main(tkinter.Tk):
    def __init__(self):
        self._setup()
        self.mainloop()

    def _setup(self):
        tkinter.Button(self, text='Push me!').pack()

if __name__ == '__main__':
    Main()
此外,这里还有一个指向从控制台获取的异常回溯的链接:

正如我在safetkinter使用示例中看到的,初始化应该以另一种方式完成。下面是基于您的代码和safetkinter示例(带按钮的框架)的简短工作代码。您可以扩展和改进它:

import safetkinter as tkinter

class Main(tkinter.Frame):
    def __init__(self, master, **kw):
        super().__init__(master, **kw)

    @classmethod
    def main(cls):
        root = cls.create_application_root()
        self = cls.setup_class_instance(root)
        root.mainloop()

    @staticmethod
    def create_application_root():
        root = tkinter.Tk()
        root.minsize(400, 340)
        root.title('Title')
        return root

    @classmethod
    def setup_class_instance(cls, root):
        instance = cls(root)
        instance.button = tkinter.Button(root, text='Push me!').pack()
        return instance

if __name__ == '__main__':
    Main.main()