Kivy 错误:[CRITICAL] [App] 无法获取窗口,中止

Posted

技术标签:

【中文标题】Kivy 错误:[CRITICAL] [App] 无法获取窗口,中止【英文标题】:Kivy error: [CRITICAL] [App ] Unable to get a Window, abort 【发布时间】:2019-07-15 08:34:24 【问题描述】:

我看到的针对此 Kivy 错误的所有解决方案均不适用于我。现在已经有两个多星期了,但我所有的努力都是徒劳的。我使用 python 3.6.4、kivy 1.10.1、pycharm 作为我的 IDE 和 Windows 10。这是错误代码和代码本身:

代码:

from kivy.core.window import Window
import os
os.environ['KIVY_GL_BACKEND'] = 'angel_sdl2'
from kivy.app import App
from kivy.uix.button import Button

# from kivy import Config
# Config.set('graphics', 'multisamples', '0')

class MyApp(App):
  def build(self):
     return Button(text='Hello world')


if __name__ == '__main__':
   MyApp().run()

错误:

enter code here"C:\Program Files\Python36-32\python.exe" 
"C:/Users/Sabinus O Ofoleta/Desktop/python/tested.py"
[INFO   ] [Logger      ] Record log in C:\Users\Sabinus O    Ofoleta\.kivy\logs\kivy_19-02-21_4.txt
[INFO   ] [Kivy        ] v1.10.1
 [INFO   ] [Python      ] v3.6.7 (v3.6.7:6ec5cf24b7, Oct      20 2018, 12:45:02) [MSC v.1900 32 bit (Intel)]
 [INFO   ] [Factory     ] 194 symbols loaded
 [INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
 [INFO   ] [Text        ] Provider: sdl2
 [INFO   ] [Window      ] Provider: sdl2
 [INFO   ] [Window      ] Activate GLES2/ANGLE context
 [CRITICAL] [Window      ] Unable to find any valuable  Window provider.
 sdl2 - RuntimeError: b'Could not initialize EGL'
 File "C:\Program Files\Python36-32\Lib\site-packages   \kivy\core\__init__.py", line 67, in core_select_lib
  cls = cls()
 File "C:\Program Files\Python36-32\Lib\site-packages \kivy\core\window\window_sdl2.py", line 140, in __init__
super(WindowSDL, self).__init__()
 File "C:\Program Files\Python36-32\Lib\site-packages\kivy\core\window\__init__.py", line 968, in __init__
self.create_window()
 File "C:\Program Files\Python36-32\Lib\site-packages\kivy\core\window\window_sdl2.py", line 272, in create_window
self.fullscreen,resizable , state)
 File "kivy\core\window\_window_sdl2.pyx", line 209, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
 File "kivy\core\window\_window_sdl2.pyx", line 66, in kivy.core.window._window_sdl2._WindowSDL2Storage.die

 [CRITICAL] [App         ] Unable to get a Window, abort.

 Process finished with exit code 1

我的电脑使用的是 opengl 1.1,因为其他版本不兼容,所以我决定使用“angel_sdl2”。谢谢

【问题讨论】:

【参考方案1】:

在配备 Intel GMA 965 和 Win10 的笔记本电脑上出现同样的问题

原因:显卡驱动过时,没有新版本。

解决方案(对我有用):

1) 通过 pal1000 https://github.com/pal1000/save-legacy-intel-graphics 应用工具

(更多信息https://community.khronos.org/t/i-have-opengl-3-1-but-kivy-says-that-i-have-only-1-1/103980/6)

2) 安装依赖,比如

python -m pip install --ignore-installed kivy.deps.sdl2 kivy.deps.glew

(并将系统变量“KIVY_GL_BACKEND”设置为“glew”,或者不设置 - 这是默认值;顺便说一句,安装 kivy.deps.angle 并设置“angle_sdl2”没有帮助我在这种情况下)

3) 在python代码前添加:

from kivy import Config
Config.set('graphics', 'multisamples', '0')

(来自Kivy does not detect OpenGL 2.0)

【讨论】:

【参考方案2】:

我很难相信一台可以运行 Windows 10 的计算机不能运行比 1.1 更新的 opengl 版本,它已经有 20 多年的历史,而 OpenGL ES 2.0 本身也有 10 多年的历史。更有可能的是,您没有为您的 GPU 安装驱动程序。即使要使用angle_sdl2,您也需要让DirectX 11 工作,因为angle 只是在它之上实现OpenGL。

【讨论】:

我实际上已经在整个网络上搜索了opengl 2.0,但我找不到它,我只能看到opengl 4.6。换句话说,我使用了 opengl 扩展查看器,并且在图形报告中它仅突出显示了带有绿色项目符号的 opengl 1.1 支持(兼容),并且不支持从 opengl 1.2 到 4.6 的其他版本。但我会检查 DirectX 11 是否真的在工作。感谢您的回复。 是的,它是 OpenGL ES 2.0,用于嵌入式系统,主要设计用于 android/ios 设备之类的设备,但也支持桌面设备,因为它是 OpenGL 3 的一个有用子集(afaik,不是他们之间 API 差异的专家)。你在使用一些远程桌面解决方案还是什么?他们打破对加速的支持并不少见。 不,我没有使用远程桌面解决方案。你知道是否有一种方法可以让我在 Windows 上运行 sudo apt-get 有人建议这个解决方案来解决我的上述问题。 sudo apt-get install \ libsdl2-2.0-0 \ libsdl2-image-2.0-0 \ libsdl2-mixer-2.0-0 \ libsdl2-ttf-2.0-0 no apt-get on windows,反正这个解决方案是针对linux的,对于windows,相当于pip install kivy.deps.sdl2 好的。但是我已经做了几次 pip install Kivy.deps.sdl2 现在它不工作了。也许我应该考虑买一台新笔记本电脑,你能推荐一下吗?【参考方案3】:

我找到了解决这个问题的方法;复制您的C:\Python27\share\sdl2\bin 中的所有文件或任何包含sdl2 文件夹的路径。将这些文件粘贴到 System32SysWOW64 文件夹中。

【讨论】:

以上是关于Kivy 错误:[CRITICAL] [App] 无法获取窗口,中止的主要内容,如果未能解决你的问题,请参考以下文章

Kivy错误:[CRITICAL] [App]无法获得一个窗口,中止

Kivy 错误,[CRITICAL] [Text] 无法找到任何有价值的文本提供程序(python 3.6.1)(windows 10)

from kivy.core.window._window_sdl2 import _WindowSDL2Storage [CRITICAL] [App] 无法获取窗口,中止 [重复]

让 Kivy 最终在 Eclipse 中工作,编译然后错误:CRITICAL Application No window is created.Terminating application run

基维。文本提供程序错误

Ubuntu下安装kivy