我试图编写一个函数,该函数根据条件在奇异果gui中启动弹出窗口。该方法在主应用程序之外,因为我正在使用多线程以同时运行它们。每次我尝试在主应用程序外部的方法中初始化新的弹出窗口时,它都会崩溃。如果我不初始化它,它将运行正常。有什么想法吗?
答案 0 :(得分:0)
您必须在kivy线程上执行与GUI相关的操作(例如打开或关闭Popup
)。
在您的代码中,您将调用sm.open_unrecognized()
的位置执行Clock.schedule_once(sm.open_unrecognized, 0)
。这样一来,在下一帧显示后,您就可以将通话安排到kivy线程上的open_unrecognized
。
关闭Popup
可以自动完成(在Popup
之外的任何点击),也可以在Button
中使用类似Popup
的方式显式删除。请注意,Button
事件调用的任何代码都是在kivy线程上执行的。
有关更多信息,请参见Clock documentation