#python #kivy
#python #kivy
Вопрос:
Я хочу добавить scrollview внутри 1 из моих экранов и на том же экране. Я хочу иметь кнопку, которая перенаправляет на главный экран. Приведенный ниже код, похоже, не работает. Это мой код на python (предположим, я импортировал соответствующие модули):
class Main(Screen):
pass
class View(Screen):
view = ObjectProperty(Non
def __init__(self, **kwargs):
super(View, self).__init__(**kwargs)
Clock.schedule_once(self.create_scrollview)
def create_scrollview(self, dt):
base = ["element {}".format(i) for i in range(40)]
layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
layout.bind(minimum_height=layout.setter("height"))
for element in base:
layout.add_widget(Button(text=element, size=(50, 50), size_hint=(1, None),background_color=(0.5, 0.5, 0.5, 1), color=(1, 1, 1, 1)))
scrollview = ScrollView(size_hint=(1, None), size=(Window.width, Window.height))
scrollview.add_widget(layout)
self.view.add_widget(scrollview)
class Manager(ScreenManager): #transition of windows
def __init__(self, **kwargs):
super(Manager, self).__init__(**kwargs)
pass
kv = Builder.load_file('main.kv')
class NotesApp(App):
def build(self):
return kv
if __name__ == '__main__':
NotesApp().run()
Это мой файл kv:
Manager:
Main:
View:
<Button>:
font_size:35
<Label>:
font_size:45
<Main>:
name:'main'
<View>:
name: 'view'
FloatLayout:
Button:
pos_hint:{'x':0.2,'top':0.975}
size_hint:0.6,0.15
text: 'Back'
on_release:
app.root.current = 'main'
root.manager.transition.direction = 'right'
Комментарии:
1. Я думаю, вам нужно добавить что-то подобное в
view: root
соответствии с вашим<View>:
правилом вkv
файле.
Ответ №1:
файл kv
- Добавить
id: view
вFloatLayout:
- Добавьте
view: view
в соответствии с правилом класса,<View>:
. Это делается для привязки ObjectProperty к идентификатору. - Добавить
id: btn_view
вButton:
- Сначала настройте направление перехода, прежде чем переключать экран
kv — Сниппеты
<View>:
name: 'view'
view: view
FloatLayout:
id: view
Button:
id: btn_view
pos_hint: {'x':0.2, 'top':0.975}
size_hint: 0.6, 0.15
text: 'Back'
on_release:
root.manager.transition.direction = 'right'
root.manager.current = 'main'
Скрипт на Python
- Вычтите высоту ScrollView на высоту виджета Button
Python — Фрагменты
scrollview = ScrollView(size_hint=(1, None), size=(Window.width, Window.height - self.ids.btn_view.height),
bar_width=8, bar_color=[1, 0, 0, 1], bar_inactive_color=[0, 0, 1, 1],
effect_cls="ScrollEffect", scroll_type=['bars'])