Skip to content

Instantly share code, notes, and snippets.

@Cheaterman
Last active August 29, 2015 14:22
Show Gist options
  • Save Cheaterman/41f9611da649d618e4ee to your computer and use it in GitHub Desktop.
Save Cheaterman/41f9611da649d618e4ee to your computer and use it in GitHub Desktop.
Shahriar
*.pyc
.*.sw*
Small screenmanager test with multiple KVfiles and Python→KV interaction
from kivy.app import App
from testsm import TestSM
class Tst(App):
def build(self):
return TestSM()
Tst().run()
MainScreen:
name: 'main'
layout: layout
ScrollView:
GridLayout:
id: layout
size_hint_y: None
height: self.minimum_height
cols: 1
spacing: 10
Label:
text: root.string
font_size: '50dp'
from kivy.uix.screenmanager import Screen
from kivy.properties import StringProperty, ObjectProperty
from kivy.uix.button import Button
class MainScreen(Screen):
string = StringProperty('')
layout = ObjectProperty(None)
def on_layout(self, *args):
layout = self.layout
def append_text(*args):
self.string += args[0].text
for i in range(30):
btn = Button(text=str(i + 1), size_hint_y=None, height=40, on_release=append_text)
layout.add_widget(btn)
MenuScreen:
name: 'menu'
Button:
text: 'Start!'
size_hint: .25, .1
pos_hint: {'center': (.75, .5)}
on_release:
root.manager.current = 'main'
from kivy.uix.screenmanager import Screen
class MenuScreen(Screen):
pass
from kivy.uix.screenmanager import ScreenManager
from kivy.lang import Builder
from menu_screen import MenuScreen
from main_screen import MainScreen
class TestSM(ScreenManager):
def __init__(self, **kwargs):
super(TestSM, self).__init__(**kwargs)
self.add_widget(Builder.load_file('menu_screen.kv'))
self.add_widget(Builder.load_file('main_screen.kv'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment