android - 无法在 kivy launcher for android 中运行 "hello world"python 代码

标签 android python kivy

我正在尝试在我的 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()

当我从启动器启动它时,它立即崩溃。这是我在日志文件夹中得到的:

[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

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

最佳答案

试试这个:

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) 来自之前的构建方法,所以可能与此有关。据我所知,build 方法通常会返回一个类的实例,该类是应用程序的根小部件。该类通常似乎要么继承自 kivy 布局,要么继承自 Widget 类本身,并将其他所有内容封装为 widget 树的根。

关于android - 无法在 kivy launcher for android 中运行 "hello world"python 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29982248/

相关文章:

python - 使 kivy 应用程序可执行

android - 滚动超出 Y 轴的 AChartEngine 条形图

Android:如何制作具有稳定 ID 的适配器?

python - 切片 numpy 结构化一维​​数组以获取记录的一部分

python - Pyinstaller 的 ModuleNotFoundError

Kivy 启动器和依赖项/第三方库

android - 在 Android 中接收和解码 H.264 直播流

Android whatsapp 喜欢来电通知

python - Matplotlib 默认设置小刻度 "ON"

python - 有没有办法取消Kivy中的UrlRequest?