Python kivy примеры программ

Selected Projects

What is the best way to learn more about the Kivy framework potential? A list of projects built via Kivy curated by the community itself!

Want to feature your project here? Feel free to open a PR!

Snake remake with adapted for smartphones controls, that make the game even more exciting. Hearts system makes it even more fun to play! 3 languages localization: English, Chinese, Russian. Have a good game!

Winner of the Python Discord Code Jam VI! A morse code app, allowing you to decode, encode, train your ear or your morse tapping skills, and even to send and receive messages in morse code! The decoder can even use your microphone to decode morse code from audio on the fly.

Second place for the Python Discord Code Jam VI!.Being an artist in the stone age wasn’t easy.Take you chisel and express your primal emotionssmashing a rock to create art.

Third place for the Python Discord Code Jam VI!.Ever miss your trusty midnight commander?Wish it time traveled to this age of multitouchand opengl?Explore, manage directories, edit text files and view images.

A feature-rich photo manager with photo and video editing capabilities. Sort photos and videos with a database, easily import files from your camera or phone. Edit photos and videos with color adjustments, filters, rotation, cropping, and more. Export your photos for websites, create collages, or convert your videos.

Learn Python Offline & IDE

An application to learn and experiment with PythonRead and search documentation & tutorials.Includes an editor and offline compiler in the pro version

Phylogenomic data gathering, processing and visualization for everyone! Detection and exploration of orthologs across multiple species. made easy! Convert, manipulate and export thousands of multiple sequence alignments in a breeze

Meccano Rubik’s Shrine

An electro-mecanical project to solve Rubik’s cubesusing Meccano, Arduino, a Raspberry pi and Kivy

Métropole de Marseille

A custom application to present the Marseille métropole Map with POI selection and basket, custom dynamic object menuRstDocument used to display converted docx documents

Mission Pinball Framework

A free Python-based pinball framework used to run real pinball machines.Allows builders and programmers to create software for their pinball machines.

Collaborative interaction endeavoursusing laser pointers to collectivelydiscover and interact on video games and movies.

Casual puzzle/brain teaser with simple gameplayMultiple game modesFriends and global leaderboard!.

Arcade spaceship simulatorUse gravity in travel through the space94 unique challenging levels

KOGNITIVO — Brain Training

Analyse your cognitive activityon the basis of some short games!See your daily and weekly productivity in graphs

Decipher all of those crazy names and tell you which beers you’ll be glad you tried.Beers recommendation based on your personal taste!

Читайте также:  Gradle start java project

Kid drawing applicationUndo system, one touch to change tool.Multitouch supported!

Explore data with objectCombine them for advanced visualisation.Single or collaborative mode!

Official App for PyDelhi Conf 2017Used on 18-19 March 2017

Fly your rocket kite among the planetsUse gravity to your advantage, collect all checkpointsExperience space flight in this colorful simulator

Create particle effect for particle systemsused in Starling, Kivy and Cocos2dWorking on Desktop and mobile.

Yeco is a multi touch controller for Ableton LiveAvailable for Windows and macOS

Commercial application for Business Process ModelingRunning on iOS, Android, and others desktop OS

Multitouch game, first place of the Kivy Contest #1

Multitouch game, second place of the Kivy Contest #1

Multitouch game, third place of the Kivy Contest #1

Multitouch screen used for control a PLC hardware machine.

Interactive tablet menu with wine, beer, cocktail. Clean design with cool touch interaction, on android !

Educational project using 4 tablets and 1 table with projection.Augmented knowledge table, that can be shared across tablet.

Monome-like controller implemented in Kivy.Graham is creating his own music on it.

Continuous keyboard implemented in Kivy.Cyril is improvising over some backing tracks.

Interactive touchscreen using Kivy for takingpictures and customize the photo with some gadgets.

Interactive white surface for discovering art exhibition.

Board-like strategy free gameResearch and use various methods to defeat the epidemy7 game modes, 4 infections, 27 methods, 13 countries

Start supporting Kivy from $5

Kivy is a free and open source software and is mantained by the community.
Sometimes, a small contribution, could help to keep the wheel spinning flawlessly.

Support Kivy as a Backer

Support Kivy as a Sponsor

Источник

Приложение на python kivy для разнообразия рациона питания. От кода и до получения .apk файла для Android

Изучаю python kivy и для себя решил написал маленькое приложение, чтобы разнообразить свое питание. Решил поделиться. Статья рассчитана на новичков в kivy. Приложение занимает около 100 строк кода.

Цель создания велосипеда приложения:

  1. Избежать частых повторений в питании. Чтобы не употреблять одно и то же блюдо слишком часто.
  2. Не забывать блюда, которые ел, потом забыл и годами к ним не возвращался, потому что банально не помнил. У меня такое бывает.

Интро

Можно не читать, в интро всякая лирика.

Пришлось пожить в одной стране, в одной гостинице, где кормили ежедневно яйцами на завтрак и больше ничем, так через месяц начал чесаться. Обращался за медицинской помощью, хотя раньше никогда ничем подобным не страдал. Наученный горьким опытом после этого для себя решил допускать как можно меньше повторений в еде, чтобы ничего не успевало в организме накопиться. Это мой личный опыт, я просто рассказываю, без навязывания. Возможно, нет правил без исключения, наверное, овсянку можно есть и каждый день на протяжении десятков лет.

Скриншоты

Предположим мой рацион состоит из 50 блюд. Например, сегодня ел омлет. Нажимаю на кнопку, и омлет стал на 50 строку в очереди, а перед ним стоят 49 блюд, которые съем, чтобы опять добраться до омлета. Вот и вся логика приложения. (На скриншотах блюда нагенеренные, все совпадения случайны, к моему реальному рациону отношения не имеющие).

Читайте также:  Ascii to utf 8 in java

Исходный код и пояснения

from kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.recycleview import RecycleView from kivy.uix.gridlayout import GridLayout from kivy.core.window import Window from kivy.config import ConfigParser from kivy.uix.textinput import TextInput from kivy.uix.label import Label from kivy.metrics import dp from datetime import datetime import os import ast import time class MenuScreen(Screen): def __init__(self, **kw): super(MenuScreen, self).__init__(**kw) box = BoxLayout(orientation='vertical') box.add_widget(Button(text='Дневник питания', on_press=lambda x: set_screen('list_food'))) box.add_widget(Button(text='Добавить блюдо в дневник питания', on_press=lambda x: set_screen('add_food'))) self.add_widget(box) class SortedListFood(Screen): def __init__(self, **kw): super(SortedListFood, self).__init__(**kw) def on_enter(self): # Будет вызвана в момент открытия экрана self.layout = GridLayout(cols=1, spacing=10, size_hint_y=None) self.layout.bind(minimum_height=self.layout.setter('height')) back_button = Button(text='< Назад в главное меню', on_press=lambda x: set_screen('menu'), size_hint_y=None, height=dp(40)) self.layout.add_widget(back_button) root = RecycleView(size_hint=(1, None), size=(Window.width, Window.height)) root.add_widget(self.layout) self.add_widget(root) dic_foods = ast.literal_eval( App.get_running_app().config.get('General', 'user_data')) for f, d in sorted(dic_foods.items(), key=lambda x: x[1]): fd = f.decode('u8') + ' ' + (datetime.fromtimestamp(d).strftime('%Y-%m-%d')) btn = Button(text=fd, size_hint_y=None, height=dp(40)) self.layout.add_widget(btn) def on_leave(self): # Будет вызвана в момент закрытия экрана self.layout.clear_widgets() # очищаем список class AddFood(Screen): def buttonClicked(self, btn1): if not self.txt1.text: return self.app = App.get_running_app() self.app.user_data = ast.literal_eval( self.app.config.get('General', 'user_data')) self.app.user_data[self.txt1.text.encode('u8')] = int(time.time()) self.app.config.set('General', 'user_data', self.app.user_data) self.app.config.write() text = "Последнее добавленное блюдо: " + self.txt1.text self.result.text = text self.txt1.text = '' def __init__(self, **kw): super(AddFood, self).__init__(**kw) box = BoxLayout(orientation='vertical') back_button = Button(text='< Назад в главное меню', on_press=lambda x: set_screen('menu'), size_hint_y=None, height=dp(40)) box.add_widget(back_button) self.txt1 = TextInput(text='', multiline=False, height=dp(40), size_hint_y=None, hint_text="Название блюда") box.add_widget(self.txt1) btn1 = Button(text="Добавить блюдо", size_hint_y=None, height=dp(40)) btn1.bind(on_press=self.buttonClicked) box.add_widget(btn1) self.result = Label(text='') box.add_widget(self.result) self.add_widget(box) def set_screen(name_screen): sm.current = name_screen sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(SortedListFood(name='list_food')) sm.add_widget(AddFood(name='add_food')) class FoodOptionsApp(App): def __init__(self, **kvargs): super(FoodOptionsApp, self).__init__(**kvargs) self.config = ConfigParser() def build_config(self, config): config.adddefaultsection('General') config.setdefault('General', 'user_data', '<>') def set_value_from_config(self): self.config.read(os.path.join(self.directory, '%(appname)s.ini')) self.user_data = ast.literal_eval(self.config.get( 'General', 'user_data')) def get_application_config(self): return super(FoodOptionsApp, self).get_application_config( '<>/%(appname)s.ini'.format(self.directory)) def build(self): return sm if __name__ == '__main__': FoodOptionsApp().run() 

Я сознательно не использовал kv файлы, так как код дан в учебных целях, для людей, которые знакомы с python. Все написано на голом python. В пояснениях я не буду останавливаться на объяснении python кода, а сразу перейду к специфическим фишкам Kivy.

box = BoxLayout(orientation='vertical')
Button(text='Дневник питания', on_press=lambda x: set_screen('list_food')) 
self.layout = GridLayout(cols=1, spacing=10, size_hint_y=None)

Grid Layout чем-то напоминает тег table в html, указывается cols — кол-во колонок или rows — кол-во строк.

root = RecycleView(size_hint=(1, None), size=(Window.width, Window.height))
config.get('General', 'user_data')

Запуск на windows & linux & macos

Принцип для всех операционок одинаковый:

  1. Ставим python3
  2. Ставим kivy
  3. Создаем файл main.py и втыкаем в него целиком вышеуказанный код
  4. Запускаем командой

Сборка apk файла и запуск на телефоне с андроид

Итак, у нас есть файл с кодом программы, написанный на python. Как теперь создать приложение, чтобы его можно было запустить на телефоне с андроидом? Раньше это был достаточно мудреный процесс, требующий навыков и танцев с бубном. Теперь это не проблема.
Вот пошаговая инструкция:

  1. Скачиваем готовую виртуальную машину от разработчиков kivy, в которой уже все настроено. https://github.com/Zen-CODE/kivybits/tree/master/KivyCompleteVM. Пароль: kivy
  2. Запускаем ее в Virtual Box.
  3. Открываем терминал и вводим следующие команды:
# Ставим последнюю версию python-for-android cd /home/kivy/Repos rm -fr python-for-android/ git clone https://github.com/kivy/python-for-android.git cd ~ mkdir Project cd Project git clone https://github.com/Alexmod/FoodOptions.git cd FoodOptions buildozer android debug # Первый раз эта команда будет долго тянуть 100500 всяких библиотек, # но в следующие разы выполняться за секунды. 

Как закинуть apk файл на телефон?

Можно, конечно, сделать это как угодно, отправить себе по почте, куда-нибудь выложить, закинуть в телеграмм и т.д., а потом скачать приложение на телефон.

Но существует специализированный инструмент для этого. Включаем на телефоне режим разработчика, подключаем USB-кабелем. Виртуалка должна увидеть, что вы подключили телефон. Дальше устанавливаем adb:

После установки заходим в папку bin и вводим команду

adb install -r foodoptions-0.1-debug.apk 

И можно примерно через минутку увидеть на телефоне приложение после того, как увидим
Success в консоли.

kivy@kivy-complete:~/Project/FoodOptions/bin$ adb install -r foodoptions-0.1-debug.apk 342 KB/s (10083019 bytes in 28.730s) Success kivy@kivy-complete:~/Project/FoodOptions/bin$ 

Если вдруг приложение падает или ведет себя не так, как ожидалось, то есть вот такая команда для просмотра ошибок

Русское имя приложения

Если вы захотите, чтобы ваше приложение называлось по-русски, например, «Дневник питания», то надо внести изменения в файл:

.buildozer/android/platform/build/dists/foodoptions/templates/strings.tmpl.xml 

В тег appName прописывается русское название приложения, эта папка создается после первого запуска buildozer android debug. После того как файл отредактируете, вернитесь назад в папку FoodOptions и запустите buildozer android debug повторно. Файл соберется по-новой. После установки на телефон имя программы будет написано на русском.

О файле buildozer.spec

Вот мой файл с гитхаба: buildozer.spec
Именно этот файл указывает buildozer-у, как именно собрать пакет.

Там множество разных вариаций. Кому интересно, то введите внутри виртуалки команду:

Будет создан дефолтный файл buildozer.spec с кучей комментариев и пояснений. Например, если вы хотите какую-нибудь свою иконку для приложения, то указываете в строке:

icon.filename = %(source.dir)s/data/icon.png

свой файл с иконкой. И приложение соберется уже с вашей иконкой.

Если вам надо подгрузить какой-нибудь специфический модуль, который не входит в официальную библиотеку python, то это делается в строке requirements =. В общем, рассказ о файле buildozer.spec может занять целую статью, а то и две.

Загрузка приложения в Google Play

Надо зарегаться, пройти все процедуры, получить ключи. И дальше запускать:

sudo apt install zipalign buildozer android release jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /path/keystore bin/apk-unsigned.apk apkname zipalign -v 4 bin/apk-apkname-unsigned.apk bin/apk-apkname-release.apk

Полученный файл apk-apkname-release.apk заливать в Google Play.

Ссылки

  1. Добавить дизайн, чтобы приложение стало красивое
  2. Использовать kv-файлы, чтобы код стал более легким. Я бы привел такую аналогию: те кто знаком с веб-программированием, представьте себе код без html темплейтов и с html темплейтами. Вынос в kv-файлы кнопок, слоев и прочего — это что-то вроде jinja2 для веб-программиста. Логика остается в .py файлах, а фенечки — в kv-файлах.
  3. Добавить подсчет калорий, белка, углеводов, жиров (БЖУ)
  4. Добавить возможность фотографировать блюда

Источник

Оцените статью