这是非常值得期待的,因为 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
如果您尝试在Thread(不确定)或multiprocessing(很可能)中这样做,如果您尝试执行以下操作,则可能会发生冲突:
def blob():
from kivy.core.window import Window
texture = Texture.create()
如果您在单独的进程中运行此函数,则单独的进程将不会具有相同的 Window,因此它会使用 Window 导入创建一个新的,然后就可以了。
要修复它,您可以做两件事:
- 使用
Config 并使用top 和left 将Window 移出查看区域的某个位置
- 在主
Window 中创建和组装纹理