该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在市面上的andriod APP都是Java 和OC的写的,作为python的爱好者,怎么甘心了。所以我想自己写了个简单的android APP (with python)附上代码。希望有共同的python for android同学 联系我 一起学习共同进步 。。。
main.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty
from kivy.clock import Clock
import random
last_pos='00'
t=1
same_num_list=[]
global l1
class mywidget(Widget):
b11=ObjectProperty()
b12=ObjectProperty()
b21=ObjectProperty()
b22=ObjectProperty()
def on_touch_down(self,touch):
global last_pos
global t
global same_num_list
new_pos=self.where_you_touch(touch.spos)
if new_pos in same_num_list:
pass
else:
if t%2!=0:
self.ids['bt'+new_pos].text=self.pos_to_num(new_pos)
self.ids['bt'+new_pos].background_color=1,0,0,1
self.ids['bt'+new_pos].font_size=150
else:
same=self.same_or_not(last_pos,new_pos)
if same:
self.ids['bt'+new_pos].text=self.pos_to_num(new_pos)
self.ids['bt'+new_pos].background_color=1,0,0,1
self.ids['bt'+new_pos].font_size=150
same_num_list.append(last_pos)
same_num_list.append(new_pos)
else:
self.ids['bt'+last_pos].text=' '
self.ids['bt'+last_pos].background_color=1,1,1,1
self.ids['bt'+new_pos].text=' '
self.ids['bt'+new_pos].background_color=1,1,1,1
last_pos=new_pos
t+=1
def pos_to_num(self,pos):
p1,p2=int(pos[0]),int(pos[1])
pid=(p1-1)*4+p2-1
res=str(b[pid])
return res
def same_or_not(self,l,n):
last=self.pos_to_num(l)
now=self.pos_to_num(n)
if last==now:
return True
else:
return False
def on_touch_up(self,touch):
pos=self.where_you_touch(touch.spos)
self.ids['bt'+pos].font_size=150
def where_you_touch(self,pos):
pos_x,pos_y=4-int(pos[1]*100)/25,1+int(pos[0]*100)/25
a=str(pos_x)+str(pos_y)
return a
def add_nums(self):
b=range(1,9)
c=range(1,9)
random.shuffle(b)
random.shuffle(c)
b.extend(c)
global b
for i in range(1,5):
for j in range(1,5):
ij=str(i)+str(j)
self.ids['bt'+ij].text=str(b[((i-1)*4+(j-1))])
self.ids['bt'+ij].font_size=150
def clear_nums(self,dt):
for i in range(1,5):
for j in range(1,5):
ij=str(i)+str(j)
self.ids['bt'+ij].text=' '
class Myapp(App):
def build(self):
my=mywidget()
my.add_nums()
Clock.schedule_once(my.clear_nums,5)
return my
if __name__=='__main__':
Myapp().run()
'my.kv'
b11:bt11
b12:bt12
b13:bt13
b14:bt14
b21:bt21
b22:bt22
b23:bt23
b24:bt24
b31:bt31
b32:bt32
b33:bt33
b34:bt34
b41:bt41
b42:bt42
b43:bt43
b44:bt44
GridLayout
pos:root.pos
size:root.size
canvas:
Rectangle:
pos:self.pos
size:self.size
cols:4
Button:
id:bt11
Button:
id:bt12
Button:
id:bt13
Button:
id:bt14
Button:
id:bt21
Button:
id:bt22
Button:
id:bt23
Button:
id:bt24
Button:
id:bt31
Button:
id:bt32
Button:
id:bt33
Button:
id:bt34
Button:
id:bt41
Button:
id:bt42
Button:
id:bt43
Button:
id:bt44
main.py 和 my.kv保存在一个目录下就可以运行了 。这是个记数字的游戏。手机里装了qpython也可以直接运行这段程序