Subscribe Us

KivyMD’s All documentation and Window Controller

Window Controller  

KivyMD Window Controller refers to a specific functionality, not a general purpose widget. It's part of the kivymd.uix.controllers module and provides methods to get information about the state of your application's window.

KivyMD’s All documentation and Window Controller

Here's a breakdown of the KivyMD Window Controller:

1 - Purpose: -

  • It helps you understand how your app window is behaving on the user's device.

2 - Benefits:-

  • You can use this information to adapt your app's UI layout based on the device and screen size.
  • Helps handle window resizing events and adjust your app's behavior accordingly.

3 - Functionality:-

  • Provides methods to detect the device type (mobile, tablet, or desktop).
  • Tracks window size changes and triggers events when the size changes.
  • Reports the direction of window resizing (left or right).


KivyMD all APIs

KivyMD offers a rich set of APIs (Application Programming Interfaces) to build user interfaces following Google's Material Design guidelines. These APIs provide various widgets and functionalities to create a modern and consistent user experience in your Kivy applications.

1 - Core Functionality:

  • Provides a base class MDApp for your KivyMD applications.
  • kivymd.uix: This submodule contains the main building blocks - widgets like buttons, cards, text fields, menus, etc. - that follow Material Design principles. There are many subcategories within kivymd.uix for specific functionalities like navigation, layouts, and selection controls.
  • Offers utility functions for hot reloading your app during development and packaging it for distribution.

2 - Benefits of Using KivyMD APIs:

  • Faster development with pre-built and customizable widgets.
  • Consistent Material Design aesthetics across your application.
  • Improved user experience with touch-friendly interfaces.


  • kivymd.factory_registers
  • kivymd.material_resources
  • kivymd.theming_dynamic_text
  • kivymd.effects
  • kivymd.effects.fadingedge
  • kivymd.effects.roulettescroll
  • kivymd.effects.stiffscroll
  • kivymd.toast
  • kivymd.toast.androidtoast
  • kivymd.toast.androidtoast.androidtoast
  • kivymd.toast.kivytoast
  • kivymd.toast.kivytoast.kivytoast
  • kivymd.uix
  • kivymd.uix.backdrop
  • kivymd.uix.banner
  • kivymd.uix.behaviors
  • kivymd.uix.bottomnavigation
  • kivymd.uix.bottomsheet
  • kivymd.uix.button
  • kivymd.uix.card
  • kivymd.uix.chip
  • kivymd.uix.controllers
  • kivymd.uix.datatables
  • kivymd.uix.dialog
  • kivymd.uix.dropdownitem
  • kivymd.uix.expansionpanel
  • kivymd.uix.filemanager
  • kivymd.uix.fitimage
  • kivymd.uix.imagelist
  • kivymd.uix.label
  • kivymd.uix.list
  • kivymd.uix.navigationdrawer
  • kivymd.uix.navigationrail
  • kivymd.uix.pickers
  • kivymd.uix.pickers.colorpicker
  • kivymd.uix.pickers.datepicker
  • kivymd.uix.pickers.timepicker
  • kivymd.uix.progressbar
  • kivymd.uix.refreshlayout
  • kivymd.uix.segmentedcontrol
  • kivymd.uix.selection
  • kivymd.uix.selectioncontrol
  • kivymd.uix.slider
  • kivymd.uix.sliverappbar
  • kivymd.uix.snackbar
  • kivymd.uix.spinner
  • kivymd.uix.swiper
  • kivymd.uix.templates
  • kivymd.uix.templates.rotatewidget
  • kivymd.uix.templates.scalewidget
  • kivymd.uix.templates.stencilwidget
  • kivymd.uix.textfield
  • kivymd.uix.toolbar
  • kivymd.uix.tooltip
  • kivymd.uix.transition
  • kivymd.utils
  • kivymd.utils.asynckivy
  • kivymd.utils.fpsmonitor
  • kivymd.utils.set_bars_colors

KivyMD All Components

KivyMD provides a vast collection of pre-built UI components that follow Google's Material Design guidelines. These components allow you to develop visually appealing and user-friendly applications for various platforms.

Benefits of Using KivyMD Components:-

  • Faster Development: Pre-built components save you time compared to building everything from scratch.
  • Consistent Design: Ensures your app follows Material Design guidelines for a familiar and intuitive user experience.
  • Touch-Friendly Interfaces: Many components are optimized for touch interactions, ideal for mobile app development.


While KivyMD components adhere to Material Design principles, they offer customization options. You can modify properties like color schemes, fonts, and sizes to match your app's unique look and feel.

  • AnchorLayout
  • Backdrop
  • Banner
  • BottomNavigation
  • BottomSheet
  • BoxLayout
  • Button
  • Card
  • Carousel
  • Chip
  • CircularLayout
  • ColorPicker
  • DataTables
  • DatePicker
  • Dialog
  • DropdownItem
  • ExpansionPanel
  • FileManager
  • FitImage
  • FloatLayout
  • GridLayout
  • Hero
  • ImageList
  • Label
  • List
  • Menu
  • NavigationDrawer
  • NavigationRail
  • ProgressBar
  • RecycleGridLayout
  • RecycleView
  • RefreshLayout
  • RelativeLayout
  • ResponsiveLayout
  • Screen
  • ScreenManager
  • ScrollView
  • SegmentedControl
  • Selection
  • SelectionControls
  • Slider
  • SliverAppbar
  • Snackbar
  • Spinner
  • StackLayout
  • Swiper
  • Tabs
  • TapTargetView
  • TextField
  • TimePicker
  • Toolbar
  • Tooltip
  • Transition
  • Widget


Behaviors are a powerful concept that allows you to add specific functionalities to your widgets without modifying their core functionality. They act like reusable modules that you can mixin with your widgets to achieve desired effects.

Benefits of Using Behaviors:-

  • Clean Code Separation: Keeps your code organized by separating core widget functionality from behavior-specific code.
  • Code Reusability: The same behavior can be applied to different widgets, reducing redundancy.
  • Simplified Development: Provides pre-built functionalities for common UI interactions.


  • Enhance existing widgets with additional features.
  • Promote code reusability by encapsulating functionalities.
  • Facilitate a more modular development approach.

All Behaviors:

  • Background Color
  • Declarative
  • Elevation
  • Focus
  • Hover
  • Magic
  • Ripple
  • Rotate
  • Scale
  • Stencil
  • ToggleButton
  • Touch


 Effects are not a single, comprehensive module like Behaviors. Instead, KivyMD offers a few specific effects that can be applied to widgets to enhance their visual appearance or interactivity.

All effects:-

  • FadingEdgeEffect
  • RouletteScrollEffect
  • StiffScrollEffect


KivyMD themes provide a powerful mechanism to control the overall look and feel of your application. They offer a consistent and customizable way to adhere to Google's Material Design guidelines.

Benefits of Using Themes:

  • Consistent Design: Ensures your app adheres to Material Design principles for a familiar user experience.
  • Easy Customization: Pre-defined themes offer a quick way to change the app's look and feel.
  • Advanced Customization: Create unique themes with complete control over colors and styles.

Here's a comprehensive look at KivyMD Themes:

Built-in Themes: KivyMD comes with a set of pre-defined color schemes that you can easily apply to your app. These themes offer various color palettes representing different Material Design styles (e.g., Red, Pink, Blue, etc.).

Theme Properties: You can control various aspects of the theme using properties provided by the kivymd.theming.ThemeManager class. Here are some key properties:

  • primary_palette: Sets the base color scheme for your app (e.g., "Blue").
  • primary_hue: Adjusts the shade within the chosen color palette (e.g., "500" for a mid-tone blue).
  • theme_style: Defines the overall theme mode (e.g., "Light" or "Dark").

Custom Themes:
Beyond pre-defined themes, KivyMD allows you to create custom themes with complete control over colors, fonts, and other visual aspects. You can achieve this by defining custom dictionaries containing color values and assigning them to the ThemeManager.

  • Theming
  • Material App
  • Color Definitions
  • Icon Definitions
  • Font Definitions


KivyMD doesn't have a built-in system for application-wide templates in the same way some frameworks offer. However, there are approaches to achieve a similar outcome:

  1. Custom Base Class:
  • Create a custom class that inherits from MDApp (or a more specific KivyMD app class).
  • Define the core UI structure for your app within the build method of this custom class. This structure can include common elements like a toolbar, navigation drawer, and content area.
  • Inherit from this custom class in your individual app screens to automatically inherit the base structure. You can then customize the content area for each screen.
  1. External Template Files:
  • Design your app's UI structure in separate .kv files. These files define the widgets and their layout using Kivy's templating language.
  • In your main Python script, load these external .kv files programmatically using Loader.load_kv and add them to your app's screen.
  1. Third-party libraries:
  • Consider libraries like kivymd-extensions which might offer pre-built application templates to jumpstart your development. Explore community resources to see if such libraries fit your needs.

  • RotateWidget
  • ScaleWidget
  • StencilWidget

Additional Tips:-

  • Utilize KivyMD's theming system to ensure a consistent look and feel across your templates.
  • Leverage KivyMD behaviors for common interactions (e.g., ripple effect) to maintain a unified user experience.

Remember, the best approach depends on your project's complexity and preferences. By combining KivyMD components, themes, and these template approaches, you can build visually appealing and well-structured KivyMD applications.


Post a Comment

* Please Don't Spam Here. All the Comments are Reviewed by Admin.