zl程序教程

您现在的位置是:首页 >  其它

当前栏目

kivy PageLayout 布局

布局 Kivy
2023-09-14 09:14:34 时间

Kivy PageLayout 是 Kivy GUI 框架中的一个布局管理器,它允许我们将不同的页面放置在同一个窗口中,并通过滑动来浏览这些页面。PageLayout 是一个类似于 TabbedPanel 的小部件,但其页面是自由调整大小并且可以滑动的。它非常适用于具有多个页面而又希望占用最小空间的应用程序。

PageLayout 中有多个页面组成,每个页面都是一个独立的小部件,可以包含不同的UI元素,如Label、Button和TextInput等等。可以通过在构建 PageLayout 实例时添加各个页面来设置它。每个页面都可以设置一个标题,用于在页眉部分显示。

PageLayout 将在父窗口中占据所有空间,并挤压其子元素以适应屏幕尺寸。这意味着您不需要为每个页面设置单独的大小,而只需要确保它们在布局中具有适当的相对大小和位置即可。同时,PageLayout 还支持在不同平台下拥有不同的外观,使您的应用程序看起来像本地应用一样。

下面是一个简单的示例,演示如何使用 PageLayout 在 Kivy 中创建多个页面:

from kivy.app import App
from kivy.uix.pagelayout import PageLayout
from kivy.uix.label import Label
from kivy.uix.button import Button

class PageLayoutApp(App):
    def build(self):
        # 创建 PageLayout 实例并添加两个页面
        layout = PageLayout()
        layout.add_widget(Label(text='这是第一页'))
        layout.add_widget(Button(text='这是第二页'))
        return layout

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

在这个示例中,我们首先导入 Kivy 库中的一些小部件,然后创建了一个 PageLayout 实例,添加了一个 Label 和一个 Button 作为两个不同的页面,并返回这个实例。当我们运行该应用程序时,我们应该能够看到 PageLayout,我们可以通过滑动来浏览这两个页面。

from kivy.app import App
from kivy.uix.pagelayout import PageLayout
from kivy.core.text import  LabelBase
LabelBase.register("Roboto","HelloKitty.TTF")


class PageLayoutW(PageLayout):
    def __init__(self):
        super(PageLayoutW, self).__init__()
        # self.join = Button(text="hello world")
        # self.add_widget(self.join)


class PageApp(App):
    def __init__(self):
        super(PageApp, self).__init__()

    def build(self):
        return PageLayoutW()

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

<PageLayoutW>:
    anim_kwargs:{"d":10,"t":"linear"}
    page:2
    #border:'100pd'
    swipe_threshold:.8
    Button:
        text:"你好 chatGPT"
        background_color:.3,.3,.3,1
    Button:
        text:"第二页"
        background_color:.3,.5,.6,1
    Button:
        text:"第三页"
        background_color:.6,.4,.3,1
    Button:
        text:"第四页"
        background_color:.3,.63,.3,1