当前位置:   article > 正文

使用Python开发Android软件_python 安卓

python 安卓

kivy

Kivy 是一个开源的 Python 框架(2011年),用于快速开发应用,实现各种当前流行的用户界面,比如多点 触摸等等。 Kivy 可以运行于 Windows, Linux, MacOS, Android, iOS 等当前绝大部分主流桌面/移 动端操作系统。 Kivy 基于 Python,界面UI文件和程序文件相互分离的设计思路,设计简洁优雅,语法易学,适合新 人入门。 目前 Kivy 的官方文档还算很完善。

第一个应用

main.py:

  1. from kivy.app import App
  2. from kivy.uix.widget import Widget
  3. from kivy.properties import (
  4. NumericProperty, ReferenceListProperty, ObjectProperty
  5. )
  6. from kivy.vector import Vector
  7. from kivy.clock import Clock
  8. class PongPaddle(Widget):
  9. score = NumericProperty(0)
  10. def bounce_ball(self, ball):
  11. if self.collide_widget(ball):
  12. vx, vy = ball.velocity
  13. offset = (ball.center_y - self.center_y) / (self.height / 2)
  14. bounced = Vector(-1 * vx, vy)
  15. vel = bounced * 1.1
  16. ball.velocity = vel.x, vel.y + offset
  17. class PongBall(Widget):
  18. velocity_x = NumericProperty(0)
  19. velocity_y = NumericProperty(0)
  20. velocity = ReferenceListProperty(velocity_x, velocity_y)
  21. def move(self):
  22. self.pos = Vector(*self.velocity) + self.pos
  23. class PongGame(Widget):
  24. ball = ObjectProperty(None)
  25. player1 = ObjectProperty(None)
  26. player2 = ObjectProperty(None)
  27. def serve_ball(self, vel=(4, 0)):
  28. self.ball.center = self.center
  29. self.ball.velocity = vel
  30. def update(self, dt):
  31. self.ball.move()
  32. # bounce of paddles
  33. self.player1.bounce_ball(self.ball)
  34. self.player2.bounce_ball(self.ball)
  35. # bounce ball off bottom or top
  36. if (self.ball.y < self.y) or (self.ball.top > self.top):
  37. self.ball.velocity_y *= -1
  38. # went of to a side to score point?
  39. if self.ball.x < self.x:
  40. self.player2.score += 1
  41. self.serve_ball(vel=(4, 0))
  42. if self.ball.right > self.width:
  43. self.player1.score += 1
  44. self.serve_ball(vel=(-4, 0))
  45. def on_touch_move(self, touch):
  46. if touch.x < self.width / 3:
  47. self.player1.center_y = touch.y
  48. if touch.x > self.width - self.width / 3:
  49. self.player2.center_y = touch.y
  50. class PongApp(App):
  51. def build(self):
  52. game = PongGame()
  53. game.serve_ball()
  54. Clock.schedule_interval(game.update, 1.0 / 60.0)
  55. return game
  56. if __name__ == '__main__':
  57. PongApp().run()

pong.kv:

  1. #:kivy 1.0.9
  2. <PongBall>:
  3. size: 50, 50
  4. canvas:
  5. Ellipse:
  6. pos: self.pos
  7. size: self.size
  8. <PongPaddle>:
  9. size: 25, 200
  10. canvas:
  11. Rectangle:
  12. pos: self.pos
  13. size: self.size
  14. <PongGame>:
  15. ball: pong_ball
  16. player1: player_left
  17. player2: player_right
  18. canvas:
  19. Rectangle:
  20. pos: self.center_x - 5, 0
  21. size: 10, self.height
  22. Label:
  23. font_size: 70
  24. center_x: root.width / 4
  25. top: root.top - 50
  26. text: str(root.player1.score)
  27. Label:
  28. font_size: 70
  29. center_x: root.width * 3 / 4
  30. top: root.top - 50
  31. text: str(root.player2.score)
  32. PongBall:
  33. id: pong_ball
  34. center: self.parent.center
  35. PongPaddle:
  36. id: player_left
  37. x: root.x
  38. center_y: root.center_y
  39. PongPaddle:
  40. id: player_right
  41. x: root.width - self.width
  42. center_y: root.center_y

打包apk文件

python+buildozer+kivy打包apk文件 - 简书

GitHub - kivy/python-for-android: Turn your Python application into an Android APK

beeware

用Python编写,无处不在运行。

BeeWare是一套工具和库的集合,每个工具和库都可以协同工作,帮助您编写跨平台本地GUI Python应用程序。它包括:

  • Toga,一个跨平台的小部件工具包;
  • Briefcase,一个将Python项目打包为可分发的工件并可发送给最终用户的工具;
  • 库(如Rubicon ObjC)用于访问平台本地库;
  • 预编译的Python版本,可用于官方Python安装程序不可用的平台。

您可以单独使用每个工具,也可以将它们全部用作一套工具。

完整的BeeWare套件还包括使用BeeWare自己的库编写的软件开发工具和应用程序。

BeeWare套件可用于macOS、Windows、Linux(使用GTK)、Android和iOS等移动平台,以及Web。我们的长期路线图中还支持其他平台(如机顶盒和手表)。

参考资料:

https://blog.csdn.net/ZNJIAYOUYA/article/details/126553693

Tutorial 1 - Your first app - BeeWare Tutorial

https://github.com/beeware/briefcase

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/537829
推荐阅读
相关标签
  

闽ICP备14008679号