91 lines
2.1 KiB
Python
91 lines
2.1 KiB
Python
|
"""
|
||
|
Themes/Material App
|
||
|
===================
|
||
|
|
||
|
This module contains :class:`MDApp` class that is inherited from
|
||
|
:class:`~kivy.app.App`. :class:`MDApp` has some properties needed for ``KivyMD``
|
||
|
library (like :attr:`~MDApp.theme_cls`).
|
||
|
|
||
|
You can turn on the monitor displaying the current ``FPS`` value in your application:
|
||
|
|
||
|
.. code-block:: python
|
||
|
|
||
|
KV = '''
|
||
|
Screen:
|
||
|
|
||
|
MDLabel:
|
||
|
text: "Hello, World!"
|
||
|
halign: "center"
|
||
|
'''
|
||
|
|
||
|
from kivy.lang import Builder
|
||
|
|
||
|
from kivymd.app import MDApp
|
||
|
|
||
|
|
||
|
class MainApp(MDApp):
|
||
|
def build(self):
|
||
|
return Builder.load_string(KV)
|
||
|
|
||
|
def on_start(self):
|
||
|
self.fps_monitor_start()
|
||
|
|
||
|
|
||
|
MainApp().run()
|
||
|
|
||
|
.. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/fps-monitor.png
|
||
|
:width: 350 px
|
||
|
:align: center
|
||
|
|
||
|
"""
|
||
|
|
||
|
__all__ = ("MDApp",)
|
||
|
|
||
|
from kivy.app import App
|
||
|
from kivy.properties import ObjectProperty
|
||
|
|
||
|
from kivymd.theming import ThemeManager
|
||
|
|
||
|
|
||
|
class FpsMonitoring:
|
||
|
"""Adds a monitor to display the current FPS in the toolbar."""
|
||
|
|
||
|
def fps_monitor_start(self):
|
||
|
from kivymd.utils.fpsmonitor import FpsMonitor
|
||
|
from kivy.core.window import Window
|
||
|
|
||
|
monitor = FpsMonitor()
|
||
|
monitor.start()
|
||
|
Window.add_widget(monitor)
|
||
|
|
||
|
|
||
|
class MDApp(App, FpsMonitoring):
|
||
|
theme_cls = ObjectProperty()
|
||
|
"""
|
||
|
Instance of :class:`~ThemeManager` class.
|
||
|
|
||
|
.. Warning:: The :attr:`~theme_cls` attribute is already available
|
||
|
in a class that is inherited from the :class:`~MDApp` class.
|
||
|
The following code will result in an error!
|
||
|
|
||
|
.. code-block:: python
|
||
|
|
||
|
class MainApp(MDApp):
|
||
|
theme_cls = ThemeManager()
|
||
|
theme_cls.primary_palette = "Teal"
|
||
|
|
||
|
.. Note:: Correctly do as shown below!
|
||
|
|
||
|
.. code-block:: python
|
||
|
|
||
|
class MainApp(MDApp):
|
||
|
def build(self):
|
||
|
self.theme_cls.primary_palette = "Teal"
|
||
|
|
||
|
:attr:`theme_cls` is an :class:`~kivy.properties.ObjectProperty`.
|
||
|
"""
|
||
|
|
||
|
def __init__(self, **kwargs):
|
||
|
super().__init__(**kwargs)
|
||
|
self.theme_cls = ThemeManager()
|