我正在尝试从 kivy.core.window import Window 导入,以便启用纹理支持以显示 numpy 数组中的图像(请参阅 https://groups.google.com/forum/#!topic/kivy-users/2Hvarxhz6lU )。
但是,当我运行导入时,Kivy 尝试打开另一个空白且无响应的窗口。当我删除导入语句时,应用程序将正常启动。
任何人都可以指出我正确的方向来导入窗口以允许纹理支持而不出现这种行为吗?
谢谢
奥利弗。
最佳答案
这是人们高度期待的,因为 Kivy 是建立在这种导入行为之上的。在简单的 Window
导入中,例如在控制台中:
>>> from kivy.core.window import Window
创建一个空白的 OpenGL 窗口,并等待进一步的指令,例如首次绘制和其他初始化内容。
让我们看一下邮件列表中的代码:
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
如果您尝试在线程
中执行此操作(不确定)或使用多处理
(很可能),如果您尝试执行以下操作,则可能会发生困难:
def blob():
from kivy.core.window import Window
texture = Texture.create()
如果您在单独的进程中运行此函数,则单独的进程将不会具有相同的 Window
,因此它会使用 Window
导入创建一个新窗口,并在此处你是。
要解决这个问题,你可以做两件事:
- 使用
Config
并使用top
和left
将Window
移出查看区域的某个位置 - 在主
窗口内创建并组装纹理
关于kivy - 从 kivy.core.window 导入 Window 会打开第二个崩溃的 Kivy 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44482937/