У меня есть следующий код, где Button
добавляется к Grid Layout
каждый раз, когда вызывается метод test_press
. Я хотел бы иметь возможность переключаться на другой экран при нажатии одной из этих кнопок, но я бы хотел, чтобы каждый Button
, созданный для go, отображал другой экран - к какому экрану он переходит. не важно в данный момент. Как бы я go о реализации чего-то подобного?
from kivy.uix.scrollview import ScrollView
from kivy.uix.button import Button
from kivy.core.window import Window
from kivymd.theming import ThemeManager
import kivy
from kivy.app import App
from kivy.properties import ObjectProperty, StringProperty, NumericProperty, ListProperty
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivy.uix.label import Label
Window.clearcolor = (1,1,1,1)
class Finder(Screen):
layout_profiles = ObjectProperty(None)
def test_press(self):
Btn1 = Button(size_hint_y=None, height=75)
self.layout_profiles.add_widget(Btn1)
class MyApp(App):
theme_cls = ThemeManager()
def build(self):
kv = Builder.load_file("kivy.kv")
sm = WindowManager()
screens = [Finder(name="finder")]
for screen in screens:
sm.add_widget(screen)
sm.current = "information"
return sm
if __name__ == '__main__':
MyApp().run()
kv file:
<Finder>:
name: "finder"
layout_profiles: layout_profiles
NavigationLayout:
id: nav_layout
MDNavigationDrawer:
NavigationDrawerIconButton:
text: "Test"
on_release: app.root.current = "login"
FloatLayout:
MDToolbar:
pos_hint: {'top': 1}
md_bg_color: 0.2, 0.6, 1, 1
left_action_items: [['menu', lambda x: root.ids.nav_layout.toggle_nav_drawer()]]
Label:
background_normal: ""
background_color: 1, 1, 1, 1
color: 0, 0, 0, 1
text: "Holding text"
font_size: 20
multiline: True
pos_hint: {"x": 0.125, "y": 0.7}
text_size: self.width, None
size_hint: 0.75, None
height: self.texture_size[1]
halign: "center"
ScrollView:
size_hint: 0.95, 0.6
pos_hint: {"x": 0.025, "top": 0.65, "bottom": 0.2}
do_scroll_x: False
GridLayout:
cols: 1
id: layout_profiles
size_hint_y: None
spacing: 10
height: self.minimum_height
canvas:
Color:
rgba: (1, 1, 1, 1)
Rectangle:
size: self.size
pos: self.pos
BoxLayout:
cols: 1
Button:
text: "Add widget"
size_hint: 0.5, 0.1
pos_hint: {"x": 0.5, "top": 0.1}
on_release: root.test_press()
Также извиняюсь, если название (или описание!) Не так ясно, я не знал, как его описать.
«Добавить виджет» Button
как раз для mimi c конечной цели, где кнопки будут добавлены в зависимости от некоторой информации, поступающей из базы данных.