Как добавить вид прокрутки в отдельном окне? - PullRequest
0 голосов
/ 21 марта 2019

Я хочу добавить вид прокрутки на 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 Ответ

0 голосов
/ 21 марта 2019

kv файл

  • Добавить id: view к FloatLayout:
  • Добавить view: view в соответствии с правилом класса, <View>:.Это делается для того, чтобы подключить ObjecProperty к идентификатору.
  • Добавить id: btn_view к Button:
  • Сначала установить направление перехода, прежде чем переключать экран

kv - Snippets

<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 Script

  • Вычтите высоту ScrollView на высоту виджета Button

Python - Snippets

        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'])

Выход

ScrollView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...