【问题标题】:can't run "hello world" python code in kivy launcher for android无法在 android 的 kivy 启动器中运行“hello world”python 代码
【发布时间】:2015-05-01 05:52:52
【问题描述】:

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

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

【问题讨论】:

  • 我一无所知,你的代码在我的电脑上运行良好。

标签: android python kivy


【解决方案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()

老实说,我不知道为什么你的代码无法运行,但我还没有看到有人直接从 build 方法返回一个 kivy 小部件(如 LabelButton),所以也许这与此有关。从我所见,通常 build 方法返回一个类的实例,它是应用程序的根小部件。该类通常看起来要么继承自 kivy 布局,要么继承自 Widget 类本身,并封装其他所有内容,作为小部件树的根。

【讨论】:

  • 没用。WARNING ] stderr: ... [WARNING ] stderr: 1: [WARNING ] stderr: 2: Label: [WARNING ] stderr: >> 3: text: "Hello World " [WARNING ] stderr: 4: [WARNING ] stderr: ... [WARNING ] stderr: Invalid indentation, must be a multiple of 3 space ..... 然后python for android死了
  • 也许我的 CM12.1 每晚都有些问题.. 我没有在其他安卓设备上测试过
  • 等一下!我刚刚尝试将您的代码保存在另一个文本编辑器中并且它有效!我的旧代码也有效。警告不要使用涡轮编辑器它很乱
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 2018-08-18
相关资源
最近更新 更多