desperate
Kivy is an open source Python framework (2011), used for rapid development of applications, to achieve a variety of popular user interfaces, such as multi-touch and so on. Kivy can run on most of the current mainstream desktop/mobile operating systems such as Windows, Linux, MacOS, Android, and iOS. Kivy is based on Python, and the interface UI file and program file are separated from each other. The design is simple and elegant, and the syntax is easy to learn. It is suitable for beginners. At present, Kivy's official documentation is fairly complete.
first application
main.py:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import (
NumericProperty, ReferenceListProperty, ObjectProperty
)
from kivy.vector import Vector
from kivy.clock import Clock
class PongPaddle(Widget):
score = NumericProperty(0)
def bounce_ball(self, ball):
if self.collide_widget(ball):
vx, vy = ball.velocity
offset = (ball.center_y - self.center_y) / (self.height / 2)
bounced = Vector(-1 * vx, vy)
vel = bounced * 1.1
ball.velocity = vel.x, vel.y + offset
class PongBall(Widget):
velocity_x = NumericProperty(0)
velocity_y = NumericProperty(0)
velocity = ReferenceListProperty(velocity_x, velocity_y)
def move(self):
self.pos = Vector(*self.velocity) + self.pos
class PongGame(Widget):
ball = ObjectProperty(None)
player1 = ObjectProperty(None)
player2 = ObjectProperty(None)
def serve_ball(self, vel=(4, 0)):
self.ball.center = self.center
self.ball.velocity = vel
def update(self, dt):
self.ball.move()
# bounce of paddles
self.player1.bounce_ball(self.ball)
self.player2.bounce_ball(self.ball)
# bounce ball off bottom or top
if (self.ball.y < self.y) or (self.ball.top > self.top):
self.ball.velocity_y *= -1
# went of to a side to score point?
if self.ball.x < self.x:
self.player2.score += 1
self.serve_ball(vel=(4, 0))
if self.ball.right > self.width:
self.player1.score += 1
self.serve_ball(vel=(-4, 0))
def on_touch_move(self, touch):
if touch.x < self.width / 3:
self.player1.center_y = touch.y
if touch.x > self.width - self.width / 3:
self.player2.center_y = touch.y
class PongApp(App):
def build(self):
game = PongGame()
game.serve_ball()
Clock.schedule_interval(game.update, 1.0 / 60.0)
return game
if __name__ == '__main__':
PongApp().run()
pong.kv:
#:kivy 1.0.9
<PongBall>:
size: 50, 50
canvas:
Ellipse:
pos: self.pos
size: self.size
<PongPaddle>:
size: 25, 200
canvas:
Rectangle:
pos: self.pos
size: self.size
<PongGame>:
ball: pong_ball
player1: player_left
player2: player_right
canvas:
Rectangle:
pos: self.center_x - 5, 0
size: 10, self.height
Label:
font_size: 70
center_x: root.width / 4
top: root.top - 50
text: str(root.player1.score)
Label:
font_size: 70
center_x: root.width * 3 / 4
top: root.top - 50
text: str(root.player2.score)
PongBall:
id: pong_ball
center: self.parent.center
PongPaddle:
id: player_left
x: root.x
center_y: root.center_y
PongPaddle:
id: player_right
x: root.width - self.width
center_y: root.center_y
Package apk file
python+buildozer+kivy package apk file - Programmer Sought
GitHub - kivy/python-for-android: Turn your Python application into an Android APK
beeware
Written in Python, runs everywhere.
BeeWare is a collection of tools and libraries that each work together to help you write cross-platform native GUI Python applications. it includes:
- Toga, a cross-platform widget toolkit;
- Briefcase, a tool for packaging Python projects as distributable artifacts that can be sent to end users;
- Libraries (like Rubicon ObjC) for accessing platform-native libraries;
- A precompiled version of Python, available for platforms where the official Python installer is not available.
You can use each tool individually or use them all as a set.
The complete BeeWare suite also includes software development tools and applications written using BeeWare's own libraries.
BeeWare suites are available for mobile platforms such as macOS, Windows, Linux (using GTK), Android, and iOS, as well as the Web. Other platforms (such as set-top boxes and watches) are also supported in our long-term roadmap.
References:
https://blog.csdn.net/ZNJIAYOUYA/article/details/126553693