3

I've been trying to build something with kivy, but whenever I try to load a different in a directory, it says that the program isn't found in the directory, when I'm sure it's there. Below is the code for the two programs and the error. The programs(main.py and pong.kv) are both in the directory pong_directory.py in Windows(C:). Any feedback is greatly appreciated.

main.py:

from kivy.app import App
from kivy.uix.widget import Widget


class pongGame(Widget):
    pass


class pongApp(App):
    def build(self):
        return pongGame()


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

pong.kv:

#:kivy 1.8.0

<PongGame>:    
    canvas:
        Rectangle:
            pos: self.center_x - 5, 0
            size: 10, self.height

    Label:
        font_size: 70  
        center_x: root.width / 4
        top: root.top - 50
        text: "0"

    Label:
        font_size: 70  
        center_x: root.width * 3 / 4
        top: root.top - 50
        text: "0"

The error:

[INFO              ] Kivy v1.8.0
[INFO              ] [Logger      ] Record log in C:\Users\rabbitrabbit\.kivy\logs\kivy_14-08-22_21.txt
[INFO              ] [Factory     ] 157 symbols loaded
[DEBUG             ] [Cache       ] register <kv.lang> with limit=None, timeout=Nones
[DEBUG             ] [Cache       ] register <kv.image> with limit=None, timeout=60s
[DEBUG             ] [Cache       ] register <kv.atlas> with limit=None, timeout=Nones
[INFO              ] [Image       ] Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored)
[DEBUG             ] [Cache       ] register <kv.texture> with limit=1000, timeout=60s
[DEBUG             ] [Cache       ] register <kv.shader> with limit=1000, timeout=3600s
[DEBUG             ] [App         ] Loading kv <C:\pong_directory.py\pong.kv>
[DEBUG             ] [App         ] kv <C:\pong_directory.py\pong.kv> not found
[DEBUG             ] [Window      ] Ignored <egl_rpi> (import error)
[INFO              ] [Window      ] Provider: pygame(['window_egl_rpi'] ignored)
[DEBUG             ] [Window      ] Display driver windib
[DEBUG             ] [Window      ] Actual window size: 800x600
[DEBUG             ] [Window      ] Actual color bits r8 g8 b8 a0
[DEBUG             ] [Window      ] Actual depth bits: 24
[DEBUG             ] [Window      ] Actual stencil bits: 8
[DEBUG             ] [Window      ] Actual multisampling samples: 2
GLEW initialization succeeded
[INFO              ] [GL          ] OpenGL version <b'2.1.2'>
[INFO              ] [GL          ] OpenGL vendor <b'NVIDIA Corporation'>
[INFO              ] [GL          ] OpenGL renderer <b'Quadro NVS 110M/PCI/SSE2'>
[INFO              ] [GL          ] OpenGL parsed version: 2, 1
[INFO              ] [GL          ] Shading version <b'1.20 NVIDIA via Cg compiler'>
[INFO              ] [GL          ] Texture max size <4096>
[INFO              ] [GL          ] Texture max units <16>
[DEBUG             ] [Shader      ] Fragment compiled successfully
[DEBUG             ] [Shader      ] Vertex compiled successfully
[DEBUG             ] [ImagePygame ] Load <C:\Python33\lib\site-packages\kivy\data\glsl\default.png>
[INFO              ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO              ] [OSC         ] using <thread> for socket
[DEBUG             ] [Base        ] Create provider from mouse
[DEBUG             ] [Base        ] Create provider from wm_touch
[DEBUG             ] [Base        ] Create provider from wm_pen
[INFO              ] [Base        ] Start application main loop

As you can see, it's saying that it can't find pong.kv in pong_directory.py, when I'm sure it's there. If anybody has any idea what's going on, I'd greatly appreciate it.

EDIT: After trying what inclement suggested, the program still has the same end result, but in the shell there's a new error:

[DEBUG             ] [App         ] kv <C:\pong_directory\pong.kv> not found
[DEBUG             ] [Window      ] Ignored <egl_rpi> (import error)
[INFO              ] [Window      ] Provider: pygame(['window_egl_rpi'] ignored)
[DEBUG             ] [Window      ] Display driver windib

I'm not sure if it's a graphics problem, but I found a question with a similar error on SE(Kivy-python: error while running Hello world), but the other problem is still there. If anyone has an idea of what's going on feedback is greatly appreciated.

EDIT: pong.kv was still ignored after adding the lines 'import kivy' and 'kivy.require('1.8.0').

Community
  • 1
  • 1
rabbitrabbit
  • 63
  • 1
  • 6
  • I don't know what's wrong. What does `print(os.path.exists('C:\pong_directory.py\pong.kv'))` say if you write it in your program? What happens if you rename the directory to remove the .py on the end? – inclement Aug 23 '14 at 11:23
  • only thing I can see different between your scripts and all of mine for kivy is that I always include the lines 'import kivy' and 'kivy.require('1.8.0')' in mine. I thought you had too...? – Totem Aug 24 '14 at 00:17
  • Also, I assume you've probably checked that your kv file is definitely 100% saved as a .kv – Totem Aug 24 '14 at 00:25

3 Answers3

1

Not a direct answer, but a possible work around:

from kivy.lang import Builder

Builder.load_file('./my_custom_file.kv')

Alternatively you can try loading the string manually and forget (delete) the kv file entirely.

from kivy.lang import Builder

Builder.load_string('''
<PongGame>:    
canvas:
    Rectangle:
        pos: self.center_x - 5, 0
        size: 10, self.height

Label:
    font_size: 70  
    center_x: root.width / 4
    top: root.top - 50
    text: "0"

Label:
    font_size: 70  
    center_x: root.width * 3 / 4
    top: root.top - 50
    text: "0"
''')

If you want to continue using the pong.kv file I also suggest renaming the main app class to PongApp. I am unsure if it has any effect but it's worth a shot.

0

Maybe because the name of your python class is pongGame and in the kv file it's called (Capital P versus lower p)

According to the python style guide the class should be with a Capital P.

Arjen Dijkstra
  • 1,479
  • 16
  • 23
  • Thank you for the response Duikboot, I tried it with the class starting capitalized and that's not the problem. ( I changed the capitalization because I thought it might be case sensitive, and pong.kv had a lowercase P) – rabbitrabbit Aug 25 '14 at 23:22
-2

Check the .kv filename. If you create the file in the IDE, it will make it 'filename.kv.py'.

Dave
  • 1