对于有一些使用java创建Android应用程序的经验的python开发人员.我想创建一个小应用程序,访问我的大学门户网站并检索一些数据,以便在Android上轻松访问它.
1)哪一个开发Android应用程序更容易,更快?
2) Kivy是否有限制访问Android的某些部分(如未与其api完全集成)?
3)最后,使用kivy开发的Android应用程序运行速度与使用java开发的应用程序一样快?
我在Kivy中更改简单小部件的颜色时遇到了麻烦.我可以在创建窗口小部件时设置颜色,但之后我无法更改它.
这是简单的布局定义文件circletest.kv.它定义了一个圆,其中颜色(实际上只是r,来自rgba),位置和大小都链接到widget类中的变量.
#:kivy 1.4.1
<CircleWidget>:
canvas:
Color:
rgba: self.r,1,1,1
Ellipse:
pos: self.pos
size: self.size
Run Code Online (Sandbox Code Playgroud)
这是应用程序circletest.py.它创建并显示简单的小部件.创建对象时成功设置颜色和位置.单击小部件时,小部件可以更改它自己的位置,但是当我尝试更改颜色时,没有任何反应.
import kivy
kivy.require('1.4.1')
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget
Builder.load_file('circletest.kv')
class CircleWidget(Widget):
def __init__(s, **kwargs):
s.size= [50,50]
s.pos = [100,50]
s.r = 0
super(CircleWidget, s).__init__(**kwargs)
def on_touch_down(s, touch):
if s.collide_point(touch.x,touch.y):
s.pos = [s.pos[1],s.pos[0]] # This works
s.r = 1.0 # <---- This does nothing!
class TestApp(App):
def build(s):
parent = Widget()
w = CircleWidget()
parent.add_widget(w) …Run Code Online (Sandbox Code Playgroud) 所以我尝试按照官方网站的说明安装Kivy:
$ sudo apt-get install python-setuptools python-pygame python-opengl \
python-gst0.10 python-enchant gstreamer0.10-plugins-good python-dev \
build-essential libgl1-mesa-dev libgles2-mesa-dev python-pip
$ sudo pip install --upgrade cython
$ sudo easy_install kivy
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
Searching for kivy
Reading http://pypi.python.org/simple/kivy/
Best match: Kivy 1.4.1
Downloading http://pypi.python.org/packages/source/K/Kivy/Kivy-1.4.1.tar.gz#md5=94bba894269e4bdecc7881f256367e01
Processing Kivy-1.4.1.tar.gz
Running Kivy-1.4.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-MMi2Fv/Kivy-1.4.1/egg-dist-tmp-EcKbfC
[INFO ] Kivy v1.4.1
Found GLES 2.0 headers at /usr/include/GLES2/gl2.h
Build configuration is:
* use_opengl_es2 = True
* use_glew = False
* use_opengl_debug = False
* use_mesagl = False
Generate config.h
Generate …Run Code Online (Sandbox Code Playgroud) 我想要一个带有黑色按钮和标签的应用程序,以及带有白色文本的应用程序,因此,希望将这些小部件分隔开来.我想,为了做到这一点,有必要将背景从默认颜色(黑色)转换为白色.实现这一目标的最佳方法是什么?谢谢!
我只是浏览源代码,寻找一种方法来做到这一点,但没有看到任何.我想确定,因为我可能错过了一些东西.是否有内置方式,就像方法一样?当我将一些ToggleButton组合在一起时,我希望能够获得当前所选(state == 'down')按钮的值(我猜的文本值).我知道我可以毫不费力地按照自己的方式来做这件事,但它似乎并不存在,这似乎很奇怪.
在检查了文档和源代码之后,我发现这是迄今为止最简单的方法:
from kivy.uix.togglebutton import ToggleButton as TB
current = [t for t in TB.get_widgets('group') if t.state=='down'][0]
value = current.text
Run Code Online (Sandbox Code Playgroud)
虽然这不是很长或很难做,但能够做到这样的事情会很好:
警告:虚构代码
value = TB.get_widgets('group').selected
Run Code Online (Sandbox Code Playgroud) 我想安装kivy(链接在这里)用于项目,但是,当尝试使用pip来安装它所依赖的包时,我收到以下错误:
Could not find a version that satisfies the requirement kivy.deps.sdl2 (from versions: )
No matching distribution found for kivy.deps.sdl2
Run Code Online (Sandbox Code Playgroud)
进一步阅读kivy的网站显示,由于某种图形错误,这些库在Windows 10上不支持Python 3.5.该网站说你需要python 3.4才能安装它.
这带来了一个问题:当我已经拥有python 3.5时,如何安装python 3.4?
我是Kivy的新手,无法指定Button的背景颜色.这是我的简单例子:
# custombutton.py
from kivy.app import App
from kivy.uix.widget import Widget
class MyWidget(Widget):
pass
class CustomButtonApp(App):
def build(self):
return MyWidget()
if __name__ == '__main__':
CustomButtonApp().run()
Run Code Online (Sandbox Code Playgroud)
以及随附的kv文件custombutton.kv:
#:kivy 1.7.2
<MyWidget>:
canvas:
Color:
rgb: (0.93, 0.93, 0.93)
Rectangle:
pos: self.pos
size: self.size
Button:
center: self.parent.center
font_size: 14
height: 28
background_color: (1.0, 0.0, 0.0, 1.0)
text: "I'm a Button"
Run Code Online (Sandbox Code Playgroud)
我确定我错过了一些明显的东西,但是我现在已经乱了一个多小时而且无处可去.按钮似乎有一丝深红色:

这不是在Kivy中为Button指定背景颜色的方法吗?
谢谢!
我正在得到运行Kivy hello world程序的常见错误.我已经尝试了我在这里看到的解决方案:手动安装gstreamer,添加PATH和安装PySDL2.我的操作系统是Windows 7,所有其他版本信息都在错误日志中.
# you need this two lines:
import os
os.environ['KIVY_IMAGE'] = 'pil,sdl2'
#kivy program
from kivy.app import App
from kivy.uix.button import Button
class TestApp(App):
def build(self):
return Button(text='Hello World')
TestApp().run()
Run Code Online (Sandbox Code Playgroud)
错误日志:
[INFO ] [Logger ] Record log in C:\Users\xyz\.kivy\logs\kivy_16-11-19_11.txt
[INFO ] [Kivy ] v1.9.1
[INFO ] [Python ] v2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)]
[INFO ] [Factory ] 179 symbols loaded
[INFO ] [Image ] Providers: …Run Code Online (Sandbox Code Playgroud) 我意识到简短的回答可能是"不",但也许这值得再次提出.
如果我正在使用几千行来使用Kivy应用程序 - 那么是否可以在另一个kv文件中编写一些类?
这样可以更容易编辑,纠正错误,进行更改......等等.
只是为了澄清 - .KV文件将是彼此的延续 - 而不是指向并行应用程序.
非常感谢一些专家的见解 - 谢谢.
kivy ×10
python ×8
android ×1
c ×1
cython ×1
downgrade ×1
gcc ×1
java ×1
python-3.x ×1
togglebutton ×1