kivy - 从 kivy.core.window 导入 Window 会打开第二个崩溃的 Kivy 窗口

标签 kivy kivy-language

我正在尝试从 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并使用 topleftWindow 移出查看区域的某个位置
  • 在主窗口内创建并组装纹理

关于kivy - 从 kivy.core.window 导入 Window 会打开第二个崩溃的 Kivy 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44482937/

相关文章:

python - kivy 弹出问题。如何让弹出窗口显示在 kivy 模块上?

android - Kivy 和 Google Play 服务

python - Kivy - 在其他屏幕中创建的访问实例

python - 如何在kivy python中更改 TreeView 的背景颜色?

python - 如何在 Kivy 中拥有多个窗口?

android - Kivy 和 android 通知

python-3.x - Kivymd 对话框关闭

Python kivy - 如何降低 TextInput 的高度

python - Kivys GridLayout 中的 ScrollView

python - NavigationLayout Kivy err0r