首页 文章

无法在kivy launcher for android中运行“hello world”python代码

提问于
浏览
3

我正在尝试从我的nexus 5上的kivy启动器中的kivy.org运行此代码 . 我已经在kivy文件夹和“android.txt”文件中创建了一个文件夹 . 这是main.py:

import kivy
kivy.require('1.9.0')
from kivy.app import App
from kivy.uix.label import Label


class TestApp(App):
   def build(self):
          return Label(text='Hello World')
if __name__ == '__main__':
   TestApp().run()

当我从启动器启动它时它立即崩溃 . 这是我在logs文件夹中得到的:

[INFO              ] Logger: Record log in /storage/emulated/0/kivy/myshit/.kivy/logs/kivy_15-05-01_6.txt
[INFO              ] Kivy: v1.9.0
[INFO              ] Python: v2.7.2 (default, Apr  2 2015, 13:52:41) 
[GCC 4.8]
[INFO              ] Factory: 173 symbols loaded
[WARNING           ] stderr: /data/data/org.kivy.pygame/files/lib/python2.7/site-packages/kivy/core/image/img_pygame.py:1.3: RuntimeWarning: import cdrom: No module named cdrom
[WARNING           ] stderr: (ImportError: No module named cdrom)
[INFO              ] Image: Providers: img_tex, img_dds, img_gif, img_pygame, img_pil (img_ffpyplayer ignored)
[WARNING           ] stderr: Traceback (most recent call last):
[WARNING           ] stderr:   File "main.py", line 9, in <module>
[WARNING           ] stderr:     return Label(text='Hello World')
[WARNING           ] stderr:   File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/kivy/app.py", line 798, in run
[WARNING           ] stderr:   File "main.py", line 7, in build
[WARNING           ] stderr:     class TestApp(App):
[WARNING           ] stderr: NameError: global name 'Label' is not defined

请指导我做错了什么?附:我不编译应用程序,我只是想在启动器中运行它 . 示例游戏和展示工作正常 .

1 回答

  • 1

    试试这个:

    import kivy
    kivy.require('1.9.0')
    from kivy.app import App
    from kivy.lang import Builder
    
    kv = '''
    Label:
        text: "Hello World"
    '''
    
    class TestApp(App):
       def build(self):
              return Builder.load_string(kv)
    if __name__ == '__main__':
       TestApp().run()
    

    老实说,我没有看到有人直接从构建方法中返回一个kivy小部件(如 LabelButton ),所以也许它已经看到了,通常构建方法会返回一个类的实例 . 应用的根小部件 . 该类通常似乎继承自kivy布局或Widget类本身,并封装其他所有内容,作为小部件树的根 .

相关问题