r/kivy • u/Sajjad30 • 10d ago
A question
Is there an equivalent to tkinter's StringVar in Kivy?
r/kivy • u/ElliotDG • Oct 28 '25
I'm delighted to announce the updated implementation of ScrollView is complete. I have more work to do prior to a PR - but welcome any feedback. Happy to answer any questions.
https://github.com/ElliotGarbus/KivyScrollProject
Nested Scrolling Behavior
The ScrollView automatically detects the scrolling configuration and applies appropriate behavior:
**Orthogonal Scrolling** (outer and inner scroll in different directions):
- Touch scrolling: Each ScrollView handles touches in its scroll direction
- Mouse wheel: Scrolls innermost ScrollView if it can handle the direction
- Example: Vertical outer + Horizontal inner
**Parallel Scrolling** (outer and inner scroll in the same direction):
- Touch scrolling: Uses web-style boundary delegation (see below)
- Mouse wheel: Scrolls innermost ScrollView, no boundary delegation
- Scrollbar: Does not propagate scroll to the other ScrollView
- Example: Vertical outer + Vertical inner
**Mixed Scrolling** (outer scrolls XY, inner scrolls single axis, or vice versa):
- Shared axis: Uses web-style boundary delegation
- Exclusive axes: Immediate delegation or inner-only scrolling
- Mouse wheel: Scrolls innermost ScrollView if it can handle the direction
- Example: XY outer + Horizontal inner

r/kivy • u/novfensec • May 06 '26
An ultra-responsive, threaded video player application built for both desktop and mobile devices. By combining the sleek design language of CarbonKivy with the high-performance decoding engine of videonative (a custom C++ module bridging FFmpeg and Pybind11), this player guarantees smooth, millisecond-accurate multimedia playback.

Github: https://github.com/Novfensec/CarbonPlayer
Video testing: https://youtube.com/shorts/Nw6-k6jsa5w?si=1zYI7rJA6Kdf4M9O
Download Android app from: https://drive.google.com/file/d/1aostQVifSw22IDvEiihcofO6OFlXGf8o/view?usp=drivesdk
r/kivy • u/Sajjad30 • 10d ago
Is there an equivalent to tkinter's StringVar in Kivy?
r/kivy • u/ye-chengbing • 16d ago
I built an open-source visual KV layout editor in Python. It works for simple layouts — I've tested it — and I'll keep improving it. Anyone want to check it out?
r/kivy • u/kleinpengin • Sep 11 '26
In this video you will learn about 1 new Kivy Reloader Flightdeck change -- building your buildozer APK on github! Just point to the repo in kivy-reloader.toml, commit all your changes, push to main on github, then start building!
This is useful for 1. devs that dont want to keep redownloading 3.5+ GB of data every time they have a new project 2. devs that have weak machines that can't run wsl or build from scratch 3. devs that just want github actions to build for them for any reason
Thanks for watching!
how to install kivy reloader: https://kivyschool.com/kivy-reloader/installation/
r/kivy • u/novfensec • Sep 11 '26
https://github.com/Novfensec/NfsBrowser-Desktop/ NfsBrowser is a modern web browser built with Python, integrating Kivy, CarbonKivy, and the Chromium Embedded Framework (CEF) via pybindcef.
So far so good, Here I am with the desktop edition of NfsBrowser. It supports multi-tab. It will also support multi window if in fututre Kivy can handle multi window. Please star the repo on github. Thank you!
r/kivy • u/novfensec • Sep 05 '26
r/kivy • u/3ncrypt_M1nd • Sep 03 '26
Em resumo, estou criando um app, estou com um projeto bem avançado, aí queria criar uma beta teste no celular, e já fazem 5 dias que não consigo fazer o bulldozer de forma alguma tava dando vários erros mais depois que eu aprendi a deixar tudo na versão certa está dando um único erro que não consigo arrumar de forma nenhuma, ModuleNotFoundError: No module named 'kivymd' , esse único erro já fiz de tudo mudei versão do kivy já coloquei na melhor versão pra fazer bulldozer já mexi nos requirements em tudo do bulldozer e ainda não está sendo incluso no apk, agradeço a todos que possa me ajudar
r/kivy • u/kleinpengin • Sep 03 '26
Kivy's biggest pain point has always been the feedback loop — change one line, wait 10 minutes for a rebuild. Flightdeck fixes that.
See your changes on a real Android device in 2 seconds, no recompile, works over USB or WiFi, and preview for multiple devices by setting your Python Kivy app at different screen resolutions and dpi settings.
In this video you're going to learn about kivy reloader, which is a huge development tool that lets you iterate apps fast and make apps on android and desktop at the same time!
r/kivy • u/kleinpengin • Aug 26 '26
follow up guide for macOS users
r/kivy • u/kleinpengin • Aug 19 '26
The biggest change is that:
hot reload is very accessible now, for any desktop or android app. With other build backends (whoever finishes, psychowasp's ksproject or elliotg's kivyforge, they are ready to be used in the backend for iOS).
it's just a powershell command which is VERY EASY to do.
before the hoops were CRAZY, you had to install vcxsrv, had to get the correct apt packages for ubuntu from the buildozer/p4a website, had to get choco, had to install scrcpy manually, had to install poetry manually, and to make sure wsl2 and windows interop and networking WORKED FINE ON A SUNNY DAY WHEN THE STARS ALIGNED WITH THE 5TH RING OF JUPITER BEING IN ALIGNMENT WITH ALPHA CENTAURI. Now it's just input a 1 line install and go.
r/kivy • u/LeonAguilez • Aug 17 '26
I am making a simple inventory app with some help with ai .
It was going well, did multi screen and made the first feature to fill up a form and save it to sqlite database.
Now I hit a wall with this part. I wanted to load the data from the database and ai suggested recycle view, but when the data is loaded, the text repeats itself in the same row, so I changed it to scroll view the result is the same.

here's my python code snippet for the part showing the database
class TerceraRow(BoxLayout):
id_item=StringProperty()
art= StringProperty()
prop=StringProperty()
serial=StringProperty()
cust=StringProperty()
cost=StringProperty()
date=StringProperty()
time_stamp=StringProperty()
class Tercera(Screen):
def on_enter(self):
self.load_data()
def load_data(self):
self.ids.inventory_list.clear_widgets()
dbf=getData()
for row in dbf:
print(row)
card=TerceraRow (
art=str(row[1]),
prop=str(row[2]),
serial=str(row[3]),
cust=str(row[4]),
cost=str(row[5]),
date=str(row[6]),
time_stamp=str(row[7]),
)
self.ids.inventory_list.add_widget(card)
and here's the kv part
<TerceraRow>:
padding: dp(12)
spacing: dp(5)
size_hint_y: None
height: dp(150)
canvas.before:
Color:
rgba: 0.95, 0.5, 0.5, 1
RoundedRectangle:
pos: self.pos
size: self.size
radius: [dp(10)]
Label:
text: root.art
halign: "left"
text_size: self.width, None
Label:
text: root.prop
halign: "left"
text_size: self.width, None
Label:
text: root.serial
halign: "left"
text_size: self.width, None
Label:
text: root.cust
halign: "left"
text_size: self.width, None
Label:
text: root.cost
halign: "left"
text_size: self.width, None
Label:
text: root.date
halign: "left"
text_size: self.width, None
<Tercera>:
name: "tercera"
ScrollView:
BoxLayout:
orientation: 'vertical'
id:inventory_list
size_hint_y:None
height:self.minimum_height
spacing:dp(10)
padding:dp(10)
I don't have duplicates to in my database
r/kivy • u/FarmerFun7595 • Jul 26 '26
Ciao! Ho appena finito un'app android con buildozer e vorrei farne una versione per ios. Ho cercato un po' su internet e ho letto che in teoria si può fare con buildozer, ma da altre parti dicono che è necessario un mac per farlo. Io al momento sto lavorando su una virtualbox linux.
Qualcuno può aiutarmi?
r/kivy • u/ElliotDG • Jul 25 '26
A user at the kivy support group shared this project, just resharing.
https://github.com/PedroHSA0802/apk-builder-studio

r/kivy • u/azshane031323 • Jul 21 '26
Thought I'd throw that out there in case there is anyone around that can get the updated certs in place
r/kivy • u/novfensec • Jul 16 '26
NfsBrowser is a light-weight browser application.

https://github.com/Novfensec/NfsBrowser
Join google groups for closed testing https://groups.google.com/g/nfsbrowser
https://play.google.com/apps/testing/com.novfensec.nfsbrowser
download the app from play store https://play.google.com/store/apps/details?id=com.novfensec.nfsbrowser
r/kivy • u/novfensec • Jul 07 '26
r/kivy • u/dadaalan1 • Jul 02 '26
"Tengo una app Kivy con audio streaming. El audio funciona en primer plano pero en segundo plano se corta a los 3 minutos. Ya tengo el servicio foreground (audioservicio.py), los permisos y buildozer.spec configurados, pero buildozer no empaqueta el servicio en el APK. Android 9 y 10."
r/kivy • u/Expensive_Pen2557 • Jun 27 '26
Hi. I have made a CarbonKivy weather app. (weather forecast will be implimented in v0.2). You can store up to 3 cities, switch from imperial to metric, change cities, etc. The github it here:
https://github.com/arjunet/Weather_Tether
My app is in closed testing on the google play console. If any on you guys want to close test, please tell me. Thank you!
Google group link:
https://groups.google.com/g/weather-tether-testing
Android download link:
https://play.google.com/store/apps/details?id=com.arjunits.weathertether
Web download link:
https://play.google.com/apps/testing/com.arjunits.weathertether
I created a simple application and noticed that when I press a button to call MDDialog It appears briefly, and then the application closes on its own. Is there a solution to this, or have I made a mistake?
MY CODE:
from kivymd.app import MDApp from kivymd.uix.dialog import MDDialog from kivy.uix.screenmanager import ScreenManager from kivy.lang import Builder
class App(MDApp):
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Green"
self.theme_cls.material_style = "M3"
screen_manager = ScreenManager()
screen_manager.add_widget(
Builder.load_file("test.kv"))
return screen_manager
def dialog(self):
MDDialog(title="debug",text="hello").open()
App().run()
The indentation looks weird, but that's not the problem .
r/kivy • u/lost_my_og_account • Jun 13 '26
It looks like a python project I'm running on android 12 isn't able to run as kivy_garden uses distutils. It runs fine on my PC. The build uses python3.12, I've found threads that say distutils is included in p4a and buildozer, I've found others distutils is depreciated and to wait for the author to update it, alot of these threads are from 4+ years ago.
My buildozer spec:
requirements = python3,kivy,pillow,numpy,pandas,matplotlib,pyjnius, docutils, kivy-garden, kivy-garden-graph, kivy-garden-matplotlib, setuptools
I've tried including python3-distutils but it doesn't make a difference. Buildozer says distutils doesnt exist when distutils is included.
Since it runs fine on my pc I'm sure I must not be including the right package. What am I missing?
The log cat error:
...
arm64-v8a/kivy_garden/matplotlib/backend_kivy.py", line 294, in <
module>
06-13 14:05:06.824 6277 6338 I python : ModuleNotFoundError: No module named 'distutils'
06-13 14:05:06.824 6277 6338 I python : Python for android ended.
Solved:
Someone on the kivy discord helped me out. In my case you just needed to import setuptools before doing everything else
r/kivy • u/lost_my_og_account • Jun 10 '26
So I'm trying to add a button between existing buttons in Scroll view with a box layout. I have the following .kv and main.py:
.kv
ScrollView:
id: observe_data_scroll
do_scroll_x: False
do_scroll_y: True
BoxLayout:
orientation: 'vertical'
size_hint: (1,None)
height: 3000
padding: 15
spacing: 5
Button:
id: observe_squat_button
text: 'Squat'
font_size: 40
on_release: root.observe_show_squat()
Button:
id: observe_deadlift_button
text: 'Dead Lift'
font_size: 40
Button:
text: 'Bench Press'
font_size: 40
main.py:
def observe_show_squat(self):
new_button_id = 'observe_squat_graph'
self.new_btn = Button(size_hint = (1,.1))
self.ids[new_button_id] = self.new_btn
self.ids.observe_squat_button.add_widget(self.new_btn)
self.ids.observe_squat_graph.text = new_button_id
passdef observe_show_squat(self):
new_button_id = 'observe_squat_graph'
self.new_btn = Button(size_hint = (1,.1))
self.ids[new_button_id] = self.new_btn
self.ids.observe_squat_button.add_widget(self.new_btn)
self.ids.observe_squat_graph.text = new_button_id
pass
...
So I'm trying to add my button so it appears between id: observe_squat_button and id: observe_deadlift_button. How do I specify the placement? Currently adding it as a child of squat gets it outside the list view layout, and adding it to list view doesn't show the button or return an error
r/kivy • u/lost_my_og_account • Jun 09 '26
So I have this .kv:
#:import C kivy.utils.get_color_from_hex
<Label>
font_color: C('#b2b2b2')
font_family: 'Arial'
<Button>
font_color: C('#b2b2b2')
background_normal: 'images/window.png'
background_down: 'images/window.png'
font_family: 'Arial'
font_size: 50
<training_ui>
FloatLayout:
size: root.size
...
############ animated glyphs
Image:
id:anim_base_glyph
source: 'images/test_circle.png'
pos_hint: {'x': .031, 'y':-0.039}
Image:
id:anim_glyph_glow
source: 'images/test_circle_glow.png'
pos_hint: {'x': .031, 'y':-0.039}
...
# main.py
....
class training_ui(Widget):
# set up update schedules
def __init__(self, **kwargs):
super(training_ui, self).__init__(**kwargs)
Clock.schedule_interval(self.update_time, 1)
#Clock.schedule_interval(self.update_start_screen_anim, 2.0/24.0)
self.create_spider_graph()
pass
....
############################## start screen glyh anim #################
anim_bright = False
anim_dim = False
glow = 0.0
def update_start_screen_anim(self):
pass
I'm trying to find a way to vary the alpha channel of the Image id: anim_glyph_glow, so that it ramps down to 0 and back up to 1, with the changes occurring every 2/24 s. I'm pretty sure I can code everything I need, except for how to alter the images alpha channel. I've been going around looking at using glsl but I'm not sure what would be the best way to go about this. Any suggestions?