在Python的kivy主应用程序类外部初始化弹出窗口

时间:2018-07-22 21:45:40

标签: python multithreading kivy

我试图编写一个函数,该函数根据条件在奇异果gui中启动弹出窗口。该方法在主应用程序之外,因为我正在使用多线程以同时运行它们。每次我尝试在主应用程序外部的方法中初始化新的弹出窗口时,它都会崩溃。如果我不初始化它,它将运行正常。有什么想法吗?

1 个答案:

答案 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