web-dev-qa-db-fra.com

Impossible d'obtenir une fenêtre, abandonner

Je reçois ce qui semble être une erreur commune lors de l'exécution du programme Kivy hello world. J'ai essayé les solutions que j'ai vues ici: installez manuellement gstreamer, en l'ajoutant à PATH et en installant PySDL2. Mon système d'exploitation est Windows 7, toutes les autres informations de version sont dans le journal des erreurs.

# you need this two lines:
import os
os.environ['KIVY_IMAGE'] = 'pil,sdl2'

#kivy program
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

Le journal des erreurs:

[INFO              ] [Logger      ] Record log in C:\Users\xyz\.kivy\logs\kivy_16-11-19_11.txt
[INFO              ] [Kivy        ] v1.9.1
[INFO              ] [Python      ] v2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)]
[INFO              ] [Factory     ] 179 symbols loaded
[INFO              ] [Image       ] Providers: img_pil, img_sdl2 (img_tex, img_dds, img_ffpyplayer, img_gif ignored)
[INFO              ] [Text        ] Provider: sdl2
[INFO              ] [OSC         ] using <thread> for socket
[INFO              ] [Window      ] Provider: sdl2
[INFO              ] [GL          ] GLEW initialization succeeded
[INFO              ] [GL          ] OpenGL version <3.1.0 - Build 8.15.10.2538>
[INFO              ] [GL          ] OpenGL vendor <Intel>
[INFO              ] [GL          ] OpenGL renderer <Intel(R) HD Graphics Family>
[INFO              ] [GL          ] OpenGL parsed version: 3, 1
[INFO              ] [GL          ] Shading version <1.40  - Intel Build 8.15.10.2538>
[INFO              ] [GL          ] Texture max size <8192>
[INFO              ] [GL          ] Texture max units <16>
[INFO              ] [Shader      ] fragment shader: <No errors.>
[INFO              ] [Shader      ] vertex shader: <No errors.>
[INFO              ] [Shader      ] program: <No errors.>
[CRITICAL          ] [Window      ] Unable to find any valuable Window provider at all!
sdl2 - AttributeError: tobytes
  File "C:\Program Files\python27\lib\site-packages\kivy\core\__init__.py", line 67, in core_select_lib
    cls = cls()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\window_sdl2.py", line 138, in __init__
    super(WindowSDL, self).__init__()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\__init__.py", line 722, in __init__
    self.create_window()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\window_sdl2.py", line 255, in create_window
    super(WindowSDL, self).create_window()
  File "C:\Program Files\python27\lib\site-packages\kivy\core\window\__init__.py", line 897, in create_window
    self.render_context = RenderContext()
  File "kivy\graphics\instructions.pyx", line 756, in kivy.graphics.instructions.RenderContext.__init__ (kivy\graphics\instructions.c:10729)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 512, in __init__
    self.filename = arg
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 700, in _set_filename
    mipmap=self._mipmap, nocache=self._nocache)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 430, in load
    im = loader(filename, **kwargs)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\__init__.py", line 198, in __init__
    self._data = self.load(filename)
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\img_pil.py", line 101, in load
    return list(self._img_read(im))
  File "C:\Program Files\python27\lib\site-packages\kivy\core\image\img_pil.py", line 86, in _img_read
    img_tmp.mode.lower(), img_tmp.tobytes())
  File "C:\Program Files\python27\lib\site-packages\PIL\Image.py", line 514, in __getattr__
    raise AttributeError(name)

[CRITICAL          ] [App         ] Unable to get a Window, abort.
 Exception SystemExit: 1 in 'kivy.properties.dpi2px' ignored
[CRITICAL          ] [App         ] Unable to get a Window, abort.
11
foosion

Dans cmd, accédez à python34 puis aux scripts et installez ce qui suit:

pip install --upgrade pip wheel setuptools
pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
pip install kivy.deps.gstreamer
pip install kivy.deps.angle
pip install kivy
28
Suraj Kumar

Essayez de mettre <python dir>\share\sdl2\bin sur votre chemin, cela devrait faire l'affaire. Le problème est qu’il ne trouve pas le binaire sdl2 avec lequel il travaille. Il n'y a probablement même pas de PIL fenêtrefournisseur , de sorte que l'utilisation de la variable d'environnement ne fera rien pour la création d'une fenêtre (elle sera utilisée en tant que fournisseur d'image ).

Je ne connais pas vraiment PySDL2, je ne peux donc pas vous aider. Cependant, j'ai créé un installer pour Kivy sous Windows afin de faciliter les choses pour les débutants.

De toute façon, il y a deux façons de se retrouver:

  1. Vous allez mettre les dossiers bin dans une variable PATH de manière permanente

    Je considère que c'est vraiment stupide, sauf si vous êtes sûr de ne pas supprimer Python ou le dossier, sinon vous aurez un dossier fantôme dans PATH + tous les autres programmes auront un accès aux fichiers dans les dossiers bin via PATH

  2. Vous aurez un fichier batch qui le fait temporairement

    Seuls les programmes exécutés à partir de la console/du lot auront un accès au dossier bin.

Le programme d’installation le fait pour vous et effectue même l’installation à partir de rien (pas de Python) ou de nombreuses autres choses.

Si vous n'avez pas installé Kivy dependencies , veuillez le faire en premier.

5
KeyWeeUsr

Désactivez l'accélération 3D et l'accélération vidéo 2D dans les paramètres d'affichage du logiciel virtuel (alias vmbox, vmware) ..__ Je pense que cela fonctionnera pour vous, cela fonctionnera pour moi après de nombreux essais.

1
Mahmoud Harb

Pas sûr de Windows ou de Linux, mais sur Python-for-Android tout en haut, vous devez mettre:

#qpy:kivy
import kivy
kivy.require('1.10.1') # replace with your current kivy version !
1
Robert Holmes

Je viens de trouver une solution rapide

  1. Une fois que vous avez installé Kivy en utilisant pip 
  2. accédez au répertoire C:\Utilisateurs\(nom du compte) \. kivy\et ouvrez le fichier config.ini  
  3. changez lemultisamples = 0from = 2 puis redémarrez votrecomputer. Cela permettra d’économiser d’autres problèmes, comme

[CRITICAL] [GL] Version minimale requise d'OpenGL version (2.0) NOT a trouvé!

Cela a fonctionné pour moi sur Windows 7 64 bits, python3.5 (32 bits) avec Kivy version 1.10.0

0
Ronald Saunfe