Kivymd's Documentation!

Kivymd's Documentation!

KivyMD Andrés Rodríguez, Ivanov Yuri, Artem S. Bulgakov and KivyMD contributors Mar 10, 2020 CONTENTS 1 KivyMD 1 2 Contents 3 2.1 Getting Started..............................................3 2.2 Themes..................................................6 2.3 Components............................................... 25 2.4 Behaviors................................................. 175 2.5 Change Log............................................... 185 2.6 About................................................... 191 2.7 KivyMD................................................. 193 3 Indices and tables 213 Python Module Index 215 Index 217 i ii CHAPTER ONE KIVYMD Is a collection of Material Design compliant widgets for use with, Kivy cross-platform graphical framework a frame- work for cross-platform, touch-enabled graphical applications. The project’s goal is to approximate Google’s Material Design spec as close as possible without sacrificing ease of use or application performance. This library is a fork of the KivyMD project the author of which stopped supporting this project three years ago. We found the strength and brought this project to a new level. Currently we’re in alpha status, so things are changing all the time and we cannot promise any kind of API stability. However it is safe to vendor now and make use of what’s currently available. Join the project! Just fork the project, branch out and submit a pull request when your patch is ready. If any changes are necessary, we’ll guide you through the steps that need to be done via PR comments or access to your for may be requested to outright submit them. If you wish to become a project developer (permission to create branches on the project without forking for easier collaboration), have at least one PR approved and ask for it. If you contribute regularly to the project the role may be offered to you without asking too. 1 KivyMD 2 Chapter 1. KivyMD CHAPTER TWO CONTENTS 2.1 Getting Started In order to start using KivyMD, you must first install the Kivy framework on your computer. Once you have installed Kivy, you can install KivyMD. Warning: KivyMD depends on Kivy! Therefore, before using KivyMD, first learn how to work with Kivy. 2.1.1 Installation You can install latest release version of KivyMD from PyPI: python3-m pip install kivymd If you want to install development version from master branch, you should specify git HTTPS address: # Master branch: python3-m pip install git+https://github.com/HeaTTheatR/KivyMD.git # Specific branch: python3-m pip install git+https://github.com/HeaTTheatR/KivyMD.git @stable # Specific tag: python3-m pip install git+https://github.com/HeaTTheatR/[email protected] # Specific commit: python3-m pip install git+https://github.com/HeaTTheatR/KivyMD. ,!git@f80d9c8b812d54a724db7eda30c4211d0ba764c2 # If you already has installed KivyMD:: python3-m pip install--force-reinstall git+https://github.com/HeaTTheatR/KivyMD.git Also you can install manually from sources. Just clone the project and run the setup.py script: python3./setup.py install 3 KivyMD 2.1.2 First KivyMD application from kivymd.app import MDApp from kivymd.uix.label import MDLabel class MainApp(MDApp): def build(self): return MDLabel(text="Hello, World", halign="center") MainApp().run() And the equivalent with Kivy: from kivy.app import App from kivy.uix.label import Label class MainApp(App): def build(self): return Label(text="Hello, World") MainApp().run() To left - Kivy, to right - KivyMD: At first glance, the KivyMD example contains more code. However, the following example already demonstrates how difficult it is to create a custom button in Kivy: from kivy.app import App from kivy.metrics import dp from kivy.uix.behaviors import TouchRippleBehavior from kivy.uix.button import Button from kivy.lang import Builder (continues on next page) 4 Chapter 2. Contents KivyMD (continued from previous page) KV= """ <RectangleFlatButton>: ripple_color: 0, 0, 0, .2 background_color: 0, 0, 0, 0 color: root.primary_color canvas.before: Color: rgba: root.primary_color Line: width: 1 rectangle: (self.x, self.y, self.width, self.height) Screen: canvas: Color: rgba: 0.9764705882352941, 0.9764705882352941, 0.9764705882352941, 1 Rectangle: pos: self.pos size: self.size """ class RectangleFlatButton(TouchRippleBehavior, Button): primary_color=[ 0.12941176470588237, 0.5882352941176471, 0.9529411764705882, 1 ] def on_touch_down(self, touch): collide_point= self.collide_point(touch.x, touch.y) if collide_point: touch.grab(self) self.ripple_show(touch) return True return False def on_touch_up(self, touch): if touch.grab_current is self: touch.ungrab(self) self.ripple_fade() return True return False class MainApp(App): def build(self): screen= Builder.load_string(KV) screen.add_widget( RectangleFlatButton( text="Hello, World", pos_hint={"center_x": 0.5,"center_y": 0.5}, size_hint=(None, None), size=(dp(110), dp(35)), (continues on next page) 2.1. Getting Started 5 KivyMD (continued from previous page) ripple_color=(0.8, 0.8, 0.8, 0.5), ) ) return screen MainApp().run() And the equivalent with KivyMD: from kivy.uix.screenmanager import Screen from kivymd.app import MDApp from kivymd.uix.button import MDRectangleFlatButton class MainApp(MDApp): def build(self): screen= Screen() screen.add_widget( MDRectangleFlatButton( text="Hello, World", pos_hint={"center_x": 0.5,"center_y": 0.5}, ) ) return screen MainApp().run() To left - Kivy, to right - KivyMD: 2.2 Themes 2.2.1 Theming See also: Material Design spec, Material theming 6 Chapter 2. Contents KivyMD Material App The main class of your application, which in Kivy inherits from the App class, in KivyMD must inherit from the MDApp class. The MDApp class has properties that allow you to control application properties such as color/style/font of interface elements and much more. Control material properties The main application class inherited from the MDApp class has the theme_cls attribute, with which you control the material properties of your application. API - kivymd.theming class kivymd.theming.ThemeManager(**kwargs) Bases: kivy.event.EventDispatcher primary_palette The name of the color scheme that the application will use. All major material components will have the color of the specified color theme. Available options are: ‘Red’, ‘Pink’, ‘Purple’, ‘DeepPurple’, ‘Indigo’, ‘Blue’, ‘LightBlue’, ‘Cyan’, ‘Teal’, ‘Green’, ‘LightGreen’, ‘Lime’, ‘Yellow’, ‘Amber’, ‘Orange’, ‘DeepOrange’, ‘Brown’, ‘Gray’, ‘BlueGray’. To change the color scheme of an application: from kivy.uix.screenmanager import Screen from kivymd.app import MDApp from kivymd.uix.button import MDRectangleFlatButton class MainApp(MDApp): def build(self): self.theme_cls.primary_palette="Green" # "Purple", "Red" screen= Screen() screen.add_widget( MDRectangleFlatButton( text="Hello, World", pos_hint={"center_x": 0.5,"center_y": 0.5}, ) ) return screen MainApp().run() 2.2. Themes 7 KivyMD primary_palette is an OptionProperty and defaults to ‘Blue’. primary_hue The color hue of the application. Available options are: ‘50’, ‘100’, ‘200’, ‘300’, ‘400’, ‘500’, ‘600’, ‘700’, ‘800’, ‘900’, ‘A100’, ‘A200’, ‘A400’, ‘A700’. To change the hue color scheme of an application: from kivy.uix.screenmanager import Screen from kivymd.app import MDApp from kivymd.uix.button import MDRectangleFlatButton class MainApp(MDApp): def build(self): self.theme_cls.primary_palette="Green" # "Purple", "Red" self.theme_cls.primary_hue="200" # "500" screen= Screen() screen.add_widget( MDRectangleFlatButton( text="Hello, World", pos_hint={"center_x": 0.5,"center_y": 0.5}, ) ) return screen MainApp().run() With a value of self.theme_cls.primary_hue = "500": 8 Chapter 2. Contents KivyMD With a value of self.theme_cls.primary_hue = "200": primary_hue is an OptionProperty and defaults to ‘500’. primary_light_hue Hue value for primary_light. primary_light_hue is an OptionProperty and defaults to ‘200’. primary_dark_hue Hue value for primary_dark. primary_light_hue is an OptionProperty and defaults to ‘700’. primary_color The color of the current application theme in rgba format. primary_color is an AliasProperty that returns the value of the current application theme, prop- erty is readonly. primary_light Colors of the current application color theme in rgba format (in lighter color). from kivy.lang import Builder from kivymd.app import MDApp KV= ''' Screen: MDRaisedButton: text:"primary_light" pos_hint:{"center_x": 0.5,"center_y": 0.7} (continues on next page) 2.2. Themes 9 KivyMD (continued from previous page) md_bg_color: app.theme_cls.primary_light MDRaisedButton: text:"primary_color" pos_hint:{"center_x": 0.5,"center_y": 0.5} MDRaisedButton: text:"primary_dark" pos_hint:{"center_x": 0.5,"center_y": 0.3} md_bg_color: app.theme_cls.primary_dark ''' class MainApp(MDApp): def build(self): self.theme_cls.primary_palette="Green" return Builder.load_string(KV) MainApp().run() primary_light is an AliasProperty that returns the value of the current application theme (in lighter color), property is readonly. primary_dark Colors of the current application color theme in rgba format (in darker color). primary_dark is an AliasProperty that returns the value of the current application theme (in darker color), property is readonly. accent_palette The application color palette used for items such as the tab indicator in the MDTabsBar class and so on. The image below shows the color schemes with the values self.theme_cls.accent_palette = 'Blue', Red' and Yellow': primary_hue is an OptionProperty and defaults to ‘Amber’. accent_hue Similar to primary_hue,

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    241 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us