📦 feat(app.py, requirements.txt): add new app.py file and requirements.txt for Kivy app

👍 app.py: Implement Kivy app with word pair generation and liking functionality
📝 requirements.txt: Add dependencies required for the Kivy app
This commit is contained in:
Djalim Simaila 2024-04-30 10:00:21 +02:00
commit 0299b9efa4
2 changed files with 556 additions and 0 deletions

161
app.py Normal file
View File

@ -0,0 +1,161 @@
from kivy.lang import Builder
from kivy.properties import StringProperty, ListProperty
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from kivymd.uix.navigationbar import MDNavigationBar, MDNavigationItem
from kivymd.uix.navigationbar.navigationbar import MDBoxLayout
from kivymd.uix.screen import MDScreen
from wonderwords import RandomWord
from kivymd.uix.card import MDCard
from kivy.event import EventDispatcher
from kivy.uix.scrollview import ScrollView
KV = '''
<BaseMDNavigationItem>
MDNavigationItemIcon:
icon: root.icon
MDNavigationItemLabel:
text: root.text
<MainScreen>
name: "main_screen"
MDBoxLayout:
orientation: "vertical"
pos_hint: {"center_x": .5, "center_y": .5}
MDCard:
padding: "4dp"
size_hint: None, None
size: "240dp", "100dp"
MDRelativeLayout:
MDLabel:
text : root.currentWordPair
adaptive_size: True
color: "black"
pos: "12dp", "12dp"
bold: True
MDBoxLayout:
MDButton:
style: "elevated"
pos_hint: {"center_x": .5, "center_y": .5}
on_press: root.new_word_pair(*args)
MDButtonIcon:
icon: "plus"
MDButtonText:
text: "Suivant"
MDButton:
style: "elevated"
pos_hint: {"center_x": .5, "center_y": .5}
on_press: root.like_word_pair(*args)
MDButtonIcon:
icon: "plus"
MDButtonText:
text: "Like"
<FavoriteScreen>
ScrollView:
MDBoxLayout:
id: favorite_layout
orientation: "vertical"
MDBoxLayout:
orientation: "vertical"
md_bg_color: self.theme_cls.backgroundColor
MDScreenManager:
id: screen_manager
MainScreen:
name: "Word Pair"
image_size: "1024"
FavoriteScreen:
name: "Favorites"
image_size: "800"
MDNavigationBar:
on_switch_tabs: app.on_switch_tabs(*args)
BaseMDNavigationItem
icon: "gmail"
text: "Word Pair"
active: True
BaseMDNavigationItem
icon: "twitter"
text: "Favorites"
'''
r = RandomWord()
class WordList():
words = []
class BaseMDNavigationItem(MDNavigationItem):
icon = StringProperty()
text = StringProperty()
class LikedEventDispatcher(EventDispatcher):
def __init__(self, **kwargs):
self.register_event_type('on_like')
super(LikedEventDispatcher, self).__init__(**kwargs)
def on_like(self, *args):
print("a word pair has been liked", args)
class MainScreen(MDScreen):
currentWordPair = StringProperty("TidalWave")
def new_word_pair(self,instance):
print(MDApp.get_running_app().liked)
self.currentWordPair = r.word().capitalize() + r.word().capitalize()
def like_word_pair(self,instance):
MDApp.get_running_app().liked.append(self.currentWordPair)
layout = self.manager.get_screen("Favorites").ids.favorite_layout
layout.clear_widgets()
for word in MDApp.get_running_app().liked:
print(word)
card = MDCard()
label = MDLabel(
text=word,
color="black",
)
card.add_widget(label)
layout.add_widget(card)
class FavoriteScreen(MDScreen):
image_size = StringProperty()
class Example(MDApp):
liked = ListProperty([])
def add_to_liked(self):
self.liked.append()
pass
def on_switch_tabs(
self,
bar: MDNavigationBar,
item: MDNavigationItem,
item_icon: str,
item_text: str,
):
self.root.ids.screen_manager.current = item_text
def build(self):
return Builder.load_string(KV)
Example().run()

395
requirements.txt Normal file
View File

@ -0,0 +1,395 @@
absolutely-proprietary==1.0.0
aiohttp==3.9.3
aiosignal==1.3.1
altgraph==0.17.3
annotated-types==0.6.0
anyascii==0.3.2
anyio==4.3.0
appdirs==1.4.4
arandr==0.1.11
argcomplete==3.1.1
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==2.4.1
async-lru==2.0.4
async-timeout==4.0.3
asyncio-dgram==1.2.0
attrs==23.2.0
auto-cpufreq==1
auto-py-to-exe==2.36.0
autobahn==23.6.2
autocommand==2.2.2
Automat==22.10.0
avalon_framework==1.8.2
Babel==2.14.0
beautifulsoup4==4.12.3
bidict==0.23.1
binaryornot==0.4.4
bleach==6.1.0
blinker==1.6.3
borgbackup==1.2.8
bottle==0.12.25
bottle-websocket==0.2.9
Brotli==1.1.0
bt-dualboot==1.0.1
btrfs==13
btrfsutil==6.8
build==1.2.1
CacheControl==0.14.0
cached-property==1.5.2
cachy==0.3.0
cairocffi==1.6.1
CairoSVG==2.7.1
cattrs==23.2.3
certifi==2024.2.2
cffi==1.16.0
chardet==5.2.0
charset-normalizer==3.3.2
cleo==2.1.0
click==8.1.7
clickable-ut==8.0.1
cloudscraper==1.2.71
colorama==0.4.6
coloredlogs==15.0.1
comm==0.2.2
constantly==23.10.0
construct==2.10.70
contourpy==1.1.0
cookiecutter==2.6.0
coverage==7.4.1
crashtest==0.4.1
cryptography==42.0.5
cssselect==1.2.0
cssselect2==0.7.0
cssutils==2.9.0
cycler==0.11.0
dbus-python==1.3.2
debugpy==1.8.1
decorator==5.1.1
defusedxml==0.7.1
DisplayCAL==3.9.12
distlib==0.3.8
distro==1.9.0
dnspython==2.5.0
docopt==0.6.2
docstring-to-markdown==0.15
docutils==0.20.1
dulwich==0.21.7
dunamai==1.18.0
Eel==0.16.0
et-xmlfile==1.1.0
evdev==1.7.0
eventlet==0.35.1
exceptiongroup==1.2.0
executing==2.0.0
fastjsonschema==2.19.1
filelock==3.13.3
Flask==2.3.3
Flask-Cors==4.0.0
Flask-SocketIO==5.3.6
fonttools==4.40.0
fqdn==1.5.1
freetype-py==2.4.0
frozenlist==1.4.1
fsspec==2023.9.2
gallery_dl==1.26.8
gbinder-python==1.1.2
gevent==22.10.2
gevent-websocket==0.10.1
googletrans-py==4.0.0
greenlet==3.0.3
guiscrcpy==2023.1.1
h11==0.14.0
h2==4.1.0
hkdf==0.0.3
hpack==4.0.0
hsluv==5.0.3
html5lib==1.1
httpcore==1.0.2
httpx==0.26.0
humanfriendly==10.0
humanize==4.9.0
hyperframe==6.0.1
hyperlink==21.0.0
hypothesis==6.100.0
idna==3.6
ifaddr==0.2.0
importlib_metadata==5.1.0
incremental==22.10.0
inflect==7.2.0
iniconfig==2.0.0
InquirerPy==0.3.4
installer==0.7.0
ipykernel==6.29.4
ipython==8.22.2
ipython-genutils==0.2.0
isoduration==20.11.0
iterable-io==1.0.0
itsdangerous==2.1.2
jaraco.classes==3.3.1
jaraco.context==4.3.0
jaraco.functools==4.0.0
jaraco.text==3.12.0
jedi==0.19.1
jedi-language-server==0.41.3
jeepney==0.8.0
Jinja2==3.1.3
joblib==1.3.2
Js2Py==0.72
json5==0.9.24
jsonpointer==2.4
jsonschema==4.21.1
jsonschema-specifications==2023.12.1
jupyter-console==6.6.3
jupyter-events==0.10.0
jupyter-lsp==2.2.5
jupyter_client==8.6.1
jupyter_core==5.7.2
jupyter_server==2.13.0
jupyter_server_terminals==0.5.3
jupyterlab==4.1.6
jupyterlab_pygments==0.3.0
jupyterlab_server==2.26.0
keyring==25.0.0
KindleComicConverter==5.6.5
kiwisolver==1.4.4
lark==1.1.9
libfdt==1.7.0
libvirt-python==10.2.0
lit==17.0.6.dev0
lockfile==0.12.2
lsplug==4
lsprotocol==2023.0.1
lxml==5.1.0
magic-wormhole==0.14.0
Mako==1.3.2
mariadb==1.1.10
Markdown==3.6
markdown-it-py==3.0.0
MarkupSafe==2.1.5
material-color-utilities-python==0.1.5
matplotlib==3.7.1
matplotlib-inline==0.1.6
mdurl==0.1.2
meson==1.4.0
mistune==3.0.2
more-itertools==10.2.0
mouse==0.7.1
MouseInfo==0.1.3
mozjpeg-lossless-optimization==1.1.3
msgpack==1.0.5
multidict==6.0.5
natsort==8.4.0
nbclassic==1.0.0
nbclient==0.10.0
nbconvert==7.16.3
nbformat==5.10.4
nest_asyncio==1.6.0
netaddr==0.8.0
netifaces==0.11.0
netsnmp-python==1.0a1
nftables==0.1
noiseprotocol==0.3.1
normcap==0.5.4
nose==1.3.7
notebook==7.1.2
notebook_shim==0.2.4
npyscreen==4.10.5
numpy==1.24.2
openai==1.16.2
openpyxl==3.1.2
ordered-set==4.1.0
outcome==1.3.0.post0
overrides==7.7.0
packaging==23.2
pandas==1.5.3
pandocfilters==1.5.1
parso==0.8.4
patool==2.2.0
patsy==0.5.4
pexpect==4.9.0
pfzy==0.3.4
pickleshare==0.7.5
pillow==10.2.0
pipreqs==0.4.13
pipx==1.5.0
pkginfo==1.9.6
platformdirs==4.2.0
pluggy==1.4.0
ply==3.11
poetry==1.8.2
poetry-core==1.9.0
poetry-dynamic-versioning==1.2.0
poetry-plugin-export==1.5.0
pooch==1.8.1
prometheus_client==0.20.0
prompt-toolkit==3.0.43
protontricks==1.11.1
psutil==5.9.8
ptyprocess==0.7.0
pure-eval==0.2.2
pwquality==1.4.5
py-cord==0.0.0
pyaml==23.12.0
pyasn1==0.5.0
pyasn1_modules==0.3.0
PyAutoGUI==0.9.54
pybind11==2.12.0
pycairo==1.26.0
pyclip==0.7.0
pycparser==2.22
pycryptodomex==3.12.0
pydantic==2.6.4
pydantic_core==2.16.3
pyfuse3==3.3.0
pygls==1.3.1
Pygments==2.17.2
PyGObject==3.48.1
pyinotify==0.9.6
pyinstaller==5.12.0
pyinstaller-hooks-contrib==2023.3
pyjsparser==2.7.1
pykeepass==4.0.7
pymongo==4.6.1
PyMsgBox==1.0.9
PyNaCl==1.4.0
PyOpenGL==3.1.6
pyOpenSSL==24.0.0
pyotp==2.9.0
pyparsing==3.1.0
pyperclip==1.8.2
pypng==0.20231004.0
pyproject_hooks==1.0.0
PyQt5==5.15.9
PyQt5-Qt5==5.15.2
PyQt5-sip==12.12.1
PyQtWebEngine==5.15.6
pyrsistent==0.19.3
PyScreeze==0.1.30
pyserial==3.5
PySide2==5.15.13
PySide6==6.6.2
PySocks==1.7.1
pyte==0.8.2
pytesseract==0.3.13
pytest==8.1.1
python-dateutil==2.9.0
python-engineio==4.8.2
python-json-logger==2.0.7
python-magic==0.4.27
python-slugify==8.0.4
python-socketio==5.8.0
python-xlib==0.33
pytweening==1.2.0
pytz==2024.1
PyYAML==6.0
pyzfs==2.2.99
pyzmq==25.1.2
qrcode==7.4.2
QtPy==2.4.1
ranger-fm==1.9.3
rapidfuzz==3.6.2
raven==6.10.0
redis==5.0.1
referencing==0.33.0
regex==2023.12.25
reportlab==4.1.0
requests==2.31.0
requests-futures==1.0.1
requests-toolbelt==1.0.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rich==13.7.1
rich-cli @ file:///home/djalim/.cache/yay/python-rich-cli-git/src/python-rich-cli/dist/rich_cli-1.8.0-py3-none-any.whl#sha256=aa8a908a3ad288d1eeb9de7373387c0d726e77b2302ef71d48b94064a37483ae
rich-rst==1.1.7
rpds-py==0.17.1
ruamel.yaml==0.18.6
ruamel.yaml.clib==0.2.8
s-tui==1.1.6
scikit-learn==1.4.1.post1
scipy==1.13.0
scour==0.38.2
screenkey==1.5
SecretStorage==3.3.3
Send2Trash==1.8.2
service-identity==23.1.0
setproctitle==1.3.3
shellingham==1.5.4
shiboken2==5.15.13
shiboken6==6.6.2
shiboken6-generator==6.6.2
shtab==1.6.5
six==1.16.0
smbus==1.1
sniffio==1.3.1
sortedcontainers==2.4.0
soupsieve==2.5
spake2==0.8
SQLAlchemy==2.1.0b1.dev0
srt==3.5.3
stack-data==0.6.3
statsmodels==0.14.1
stem==1.8.3
stopit==1.1.2
svglib==1.5.1
TBB==0.2
termcolor==2.4.0
terminado==0.18.1
text-unidecode==1.3
textual==0.56.3
thefuck==3.32
threadpoolctl==3.4.0
tinycss2==1.2.1
tldr==3.2.0
toml==0.10.2
tomli==2.0.1
tomli_w==1.0.0
tomlkit==0.12.4
tornado==6.3.2
torrequest==0.1.0
tqdm==4.66.2
traitlets==5.14.2
tree-sitter==0.21.0
tree-sitter-languages==1.10.2
trio==0.25.0
trove-classifiers==2024.3.29
Twisted==24.3.0
txaio==23.1.1
txtorcon==23.11.0
typeguard==4.2.1
types-python-dateutil==2.9.0.20240316
typing_extensions==4.10.0
uc-micro-py==1.0.3
ueberzug==18.2.1
uri-template==1.3.0
urllib3==1.26.18
urwid==2.6.10
userpath==1.9.2
validate-pyproject==0.13.post1.dev0+gb752273.d20230520
validators==0.20.0
vdf==3.4
virtualenv==20.25.0
vispy==0.12.2
wcwidth==0.2.13
webcolors==1.13
webencodings==0.5.1
websocket-client==1.7.0
websockets==12.0
Werkzeug==2.3.8
wg_tool==6.6.0
whichcraft==0.6.1
wsaccel==0.6.6
wxPython==4.2.1
xcffib==1.4.0
Yapsy==1.12.2
yarg==0.1.9
yarl==1.9.4
yt-dlp==2024.4.9
zeroconf==0.63.0
zipp==3.17.0
zipstream-ng==1.7.1
zope.event==5.0
zope.interface==6.2
zstandard==0.22.0
zxcvbn==4.4.28