問題描述
我一直在嘗試用 kivy 構建一些東西,但是每當我嘗試在目錄中加載不同的東西時,它都會說在目錄中找不到該程序,但我確定它在那里.下面是兩個程序的代碼和錯誤.程序(main.py 和 pong.kv)都在 Windows(C:) 中的 pong_directory.py 目錄中.非常感謝任何反饋.
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"
錯誤:
[INFO ] Kivy v1.8.0
[INFO ] [Logger ] Record log in C:Users
abbitrabbit.kivylogskivy_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.pypong.kv>
[DEBUG ] [App ] kv <C:pong_directory.pypong.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:Python33libsite-packageskivydataglsldefault.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
如您所見,當我確定它存在時,它表示它在 pong_directory.py 中找不到 pong.kv.如果有人知道發生了什么,我將不勝感激.
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.
在嘗試了建議的錯誤后,程序仍然具有相同的最終結果,但在 shell 中出現了一個新錯誤:
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_directorypong.kv> not found
[DEBUG ] [Window ] Ignored <egl_rpi> (import error)
[INFO ] [Window ] Provider: pygame(['window_egl_rpi'] ignored)
[DEBUG ] [Window ] Display driver windib
我不確定這是否是圖形問題,但我在 SE 上發現了一個類似錯誤的問題(Kivy-python: 運行 Hello world 時出錯),但另一個問題仍然存在.如果有人知道發生了什么反饋,我們將不勝感激.
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.
在添加 'import kivy' 和 'kivy.require('1.8.0') 行后 pong.kv 仍然被忽略.
pong.kv was still ignored after adding the lines 'import kivy' and 'kivy.require('1.8.0').
推薦答案
不是直接的答案,而是一種可能的解決方法:
Not a direct answer, but a possible work around:
from kivy.lang import Builder
Builder.load_file('./my_custom_file.kv')
或者,您可以嘗試手動加載字符串并完全忘記(刪除)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"
''')
如果您想繼續使用 pong.kv 文件,我還建議將主應用程序類重命名為 PongApp
.我不確定它是否有任何影響,但值得一試.
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.
這篇關于Kivy 未在目錄中檢測到文件的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!