运行python+kivy一个小程序出错,代码如下:
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
class SizeFloat(FloatLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class SizeApp(App):
def build(self):
return SizeFloat()
if __name__ == '__main__':
SizeApp().run()
试运行,出错如下:
[CRITICAL] [Window ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - Exception: SDL2: Unable to load image
File "C:PythonProjectkv-demo-envlibsite-packageskivycore__init__.py", line 71, in core_select_lib
cls = cls()
File "C:PythonProjectkv-demo-envlibsite-packageskivycorewindowwindow_sdl2.py", line 152, in __init__
super(WindowSDL, self).__init__()
File "C:PythonProjectkv-demo-envlibsite-packageskivycorewindow__init__.py", line 981, in __init__
self.create_window()
File "C:PythonProjectkv-demo-envlibsite-packageskivycorewindowwindow_sdl2.py", line 312, in create_window
super(WindowSDL, self).create_window()
File "C:PythonProjectkv-demo-envlibsite-packageskivycorewindow__init__.py", line 1258, in create_window
self.render_context = RenderContext()
File "kivygraphicsinstructions.pyx", line 783, in kivy.graphics.instructions.RenderContext.__init__
File "C:PythonProjectkv-demo-envlibsite-packageskivycoreimage__init__.py", line 561, in __init__
self.filename = arg
File "C:PythonProjectkv-demo-envlibsite-packageskivycoreimage__init__.py", line 756, in _set_filename
mipmap=self._mipmap, nocache=self._nocache)
File "C:PythonProjectkv-demo-envlibsite-packageskivycoreimage__init__.py", line 460, in load
im = loader(filename, **kwargs)
File "C:PythonProjectkv-demo-envlibsite-packageskivycoreimage__init__.py", line 223, in __init__
self._data = self.load(filename)
File "C:PythonProjectkv-demo-envlibsite-packageskivycoreimageimg_sdl2.py", line 47, in load
raise Exception('SDL2: Unable to load image')
[CRITICAL] [App ] Unable to get a Window, abort.
Process finished with exit code 1
File "C:PythonProjectkv-demo-envlibsite-packageskivycoreimageimg_sdl2.py", line 47, in load
raise Exception('SDL2: Unable to load image')
[CRITICAL] [App ] Unable to get a Window, abort.
经查询大家解决经验,没有引入sdl2模块,在代码前加入两行
import os os.environ['KIVY_IMAGE'] = 'pil,sdl2'
完整代码如下:
import os
os.environ['KIVY_IMAGE'] = 'pil,sdl2'
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
class SizeFloat(FloatLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class SizeApp(App):
def build(self):
return SizeFloat()
if __name__ == '__main__':
SizeApp().run()
再次运行,成功解决!



