【问题标题】:How to make a portion of a Kivy screen scrollable如何使 Kivy 屏幕的一部分可滚动
【发布时间】:2016-08-26 15:57:13
【问题描述】:

我希望使用以下格式的 Kivy 库在 Python 中创建一个页面

    ________________________
    |                      |
    |        title         |
    |______________________|
  >>|       Example 1      |<<
    |______________________|
    |           |          |
    |___________|__________|
    |           |          |
    |___________|__________|
    |           |          |
  >>|___________|__________|<<
    |         Home         |
    |______________________|
    |       Settings       |
    |______________________|         

箭头之间的屏幕部分应该是可滚动的。到目前为止,我的代码如下:

Kv 文件:

<ExampleScreen>:
BoxLayout:
    orientation: 'vertical'
    Label:
        text: 'title'
    ScrollView:
        GridLayout:
            cols: 1
            Label:
                text: 'Example 1'
            GridLayout:
                cols: 2
                rows: 4
                Label: 
                    text: 'Filler'
                Label:
                    text: 'Filler'
                Label:
                    text: 'Filler'
                Label:
                    text: 'Filler'
                Label: 
                    text: 'Filler'
                Label:
                    text: 'Filler'
                Label:
                    text: 'Filler'
                Label:
                    text: 'Filler'
    Button: 
        text: 'Home'
        size_hint: 1, .1
        on_press: root.manager.current = 'home'
    Button:
        text: 'Settings'
        size_hint: 1, .1
        on_press: root.manager.current = 'settings' 

py 文件:

from kivy.uix.gridlayout import GridLayout
from kivy.uix.scrollview import ScrollView
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button
from kivy.lang import Builder

Builder.load_file('example.kv')

class ExampleScreen(Screen):
    pass

sm = ScreenManager()

sm.add_widget(ExampleScreen(name = 'example'))

class TestApp(App):
    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()

我尝试了几种方法,但没有任何效果。有没有其他人有这方面的经验/知道这是否可能?感谢您的帮助!

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    是的,如果你得到正确的缩进和大小提示,这是可能的。
    ScrollView doc

    试试这个:

    <MyLabel@Label>:
        size_hint:1,None
    
    <ExampleScreen>:
        BoxLayout:
            orientation: 'vertical'
            Label:
                text: 'title'
            ScrollView:
                size_hint: 1,None
                GridLayout:
                    size_hint: 1,None
                    height: self.minimum_height
                    cols: 1
                    MyLabel:
                        text: 'Example 1'
                    GridLayout:
                        size_hint: 1,None
                        height: self.minimum_height
                        cols: 2
                        rows: 4                
                        MyLabel:
                            text: 'Filler' 
                        MyLabel:
                            text: 'Filler'
                        MyLabel:
                            text: 'Filler'
                        MyLabel:
                            text: 'Filler'
                        MyLabel: 
                            text: 'Filler'
                        MyLabel:
                            text: 'Filler'
                        MyLabel:
                            text: 'Filler'
                        MyLabel:
                            text: 'Filler'
    
            Button: 
                text: 'Home'
                size_hint: 1, .1
                on_press: root.manager.current = 'home'
            Button:
                text: 'Settings'
                size_hint: 1, .1
                on_press: root.manager.current = 'settings'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-08
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      相关资源
      最近更新 更多