从 kivy.core.window 导入 Window 会打开第二个崩溃的 Kivy window
importing Window from kivy.core.window opens a second Kivy window that crashes
我正在尝试从 kivy.core.window 导入 Window 导入,以便启用纹理支持以显示来自 numpy 数组的图像(参见 https://groups.google.com/forum/#!topic/kivy-users/2Hvarxhz6lU)。
但是,当我 运行 导入时,Kivy 会尝试打开另一个 window,它是空白且无响应的。当我删除 import 语句时,应用程序正常启动。
任何人都可以指出正确的方向来导入 Window 以在没有这种行为的情况下允许纹理支持吗?
谢谢,
奥利弗
这是非常值得期待的,因为 Kivy 是建立在这种导入行为之上的。在一个简单的 Window
导入中,例如在控制台中:
>>> from kivy.core.window import Window
创建了一个空白的 OpenGL window,它等待进一步的指令,例如第一次绘图和其他初始化内容。
让我们看看邮件列表中的代码:
class MainConsole():
def build(self):
texture = Texture.create() # no window, boom
if __name__ == '__main__':
MainApp().run() # except other stuff also creates a window
要使其真正起作用,您必须在创建 Window
之后创建纹理 ,即:
class MainConsole():
def build(self):
from kivy.core.window import Window
texture = Texture.create() # window, no boom
如果您尝试以 Thread
(不确定)或 multiprocessing
(最有可能)这样做,如果您尝试这样做,则可能会发生争执:
def blob():
from kivy.core.window import Window
texture = Texture.create()
如果您 运行 在单独的进程中使用此函数,则单独的进程将不会具有相同的 Window
,因此它会使用 Window
导入创建一个新进程并在此处你是。
要修复它,您可以做两件事:
- 使用
Config
并使用 top
和 left
将 Window
移出查看区域的某处
- 创建并 assemble 主
Window
中的纹理
我正在尝试从 kivy.core.window 导入 Window 导入,以便启用纹理支持以显示来自 numpy 数组的图像(参见 https://groups.google.com/forum/#!topic/kivy-users/2Hvarxhz6lU)。
但是,当我 运行 导入时,Kivy 会尝试打开另一个 window,它是空白且无响应的。当我删除 import 语句时,应用程序正常启动。
任何人都可以指出正确的方向来导入 Window 以在没有这种行为的情况下允许纹理支持吗?
谢谢,
奥利弗
这是非常值得期待的,因为 Kivy 是建立在这种导入行为之上的。在一个简单的 Window
导入中,例如在控制台中:
>>> from kivy.core.window import Window
创建了一个空白的 OpenGL window,它等待进一步的指令,例如第一次绘图和其他初始化内容。
让我们看看邮件列表中的代码:
class MainConsole():
def build(self):
texture = Texture.create() # no window, boom
if __name__ == '__main__':
MainApp().run() # except other stuff also creates a window
要使其真正起作用,您必须在创建 Window
之后创建纹理 ,即:
class MainConsole():
def build(self):
from kivy.core.window import Window
texture = Texture.create() # window, no boom
如果您尝试以 Thread
(不确定)或 multiprocessing
(最有可能)这样做,如果您尝试这样做,则可能会发生争执:
def blob():
from kivy.core.window import Window
texture = Texture.create()
如果您 运行 在单独的进程中使用此函数,则单独的进程将不会具有相同的 Window
,因此它会使用 Window
导入创建一个新进程并在此处你是。
要修复它,您可以做两件事:
- 使用
Config
并使用top
和left
将 - 创建并 assemble 主
Window
中的纹理
Window
移出查看区域的某处