It’s time to think about widgets again. In this chapter, you’ll see how to dynamically change what widgets are displayed in the widget tree. You’ll mainly be implementing searching and the rendering of search results. This will give you a good understanding of the intricacies of the Kivy
ListView widget and its adapters, and you’ll also learn how to create widgets and update the display dynamically in response to user or system events.
While the user will find it useful for the Add Location form to be rendered the first time the application is run, it’s not actually appropriate to set it as the root widget on the app. It’s better to have a custom root widget that knows how to manage the widgets that are displayed on it, such as the various forms I mentioned in Chapter 1.
I expect the root widget to have several methods for manipulating the display of child widgets. Start by adding an empty class to the main.py file. Make it extend
BoxLayout, but for now, the class can be otherwise empty (meaning it will behave exactly like a normal
BoxLayout). See Example 3-1.
For now, set up the KV language file to render an instance of this as the root widget. Then set up a new rule for it to include
AddLocationForm as a child, as demonstrated in Example 3-2.
Since the parent class is ...