Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中初始化kivy主应用程序类之外的弹出窗口_Python_Multithreading_Kivy - Fatal编程技术网

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

在Python中初始化kivy主应用程序类之外的弹出窗口,python,multithreading,kivy,Python,Multithreading,Kivy,我正在尝试编写一个函数,该函数在KivyGUI中根据条件启动一个弹出窗口。该方法在主应用程序之外,因为我使用多线程同时运行这两个程序。每次我尝试在主应用程序之外的方法中初始化一个新的弹出窗口时,它都会崩溃。如果我不初始化它,它运行正常。有什么想法吗?您必须在kivy线程上执行与GUI相关的操作(如打开或关闭弹出窗口) 在代码中,调用sm.open\u unrecognized()doClock.schedule\u一次(sm.open\u unrecognized,0)。这将在显示下一帧后,在k

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

您必须在kivy线程上执行与GUI相关的操作(如打开或关闭
弹出窗口

在代码中,调用
sm.open\u unrecognized()
do
Clock.schedule\u一次(sm.open\u unrecognized,0)
。这将在显示下一帧后,在kivy线程上安排调用
open\u unrecognized

可以自动关闭
弹出窗口
(在
弹出窗口
外的任何单击)或明确使用
弹出窗口中的
按钮
。请注意,
按钮
事件调用的任何代码都是在kivy线程上执行的


有关更多信息,请参见

您只能在主线程中进行gui更新…如何初始化弹出窗口并基于第二个线程打开它?如果你能帮忙的话,我可以私下把我的代码发给你。使用
Clock.schedule\u once()
。嗨,约翰,我不知道你的确切意思。这是我的密码。你可以看到我正在实例化这个应用程序,并试图在第二个线程中调用它。我试图在可以访问应用程序screenManager的地方更改它,但当我调用它时,它崩溃了。我正在通过App.get_running_App().root.open_recognized()执行此操作