Python(Kivy) - 如何调整TabbedPanel的标签大小

时间:2016-09-16 08:01:53

标签: python user-interface layout kivy kivy-language

我第一次使用Kivy库,我正在尝试使用TabbedPanel开发一个简单的用户界面。我会设置每个标签的大小(x)(在代码TabbedPanelItem中)以适应整个TabbedPanel的宽度,但如果我使用height或{{在size_hint文件中,似乎它们不起作用。

这是我的kv代码:

.kv

这是我的Python代码:

#:import sm kivy.uix.screenmanager
ScreenManagement:
    transition: sm.FadeTransition()
    SecondScreen:


<SecondScreen>:
    tabba: tabba
    name: 'second'
    FloatLayout:
        background_color: (255, 255, 255, 1.0)
        BoxLayout:
            orientation: 'vertical'
            size_hint: 1, 0.10
            pos_hint: {'top': 1.0}
            canvas:
                Color:
                    rgba: (0.98, 0.4, 0, 1.0)
                Rectangle:
                    pos: self.pos
                    size: self.size
            Label:
                text: 'MyApp'
                font_size: 30
                size: self.texture_size

        BoxLayout:
            orientation: 'vertical'
            size_hint: 1, 0.90
            Tabba:
                id: tabba

        BoxLayout:
            orientation: 'vertical'
            size_hint: 1, 0.10
            pos_hint: {'bottom': 1.0}
            Button:
                background_color: (80, 1, 0, 1.0)
                text: 'Do nop'
                font_size: 25


<Tabba>:
    do_default_tab: False
    background_color: (255, 255, 255, 1.0)
    # I would these three tabs' width filling the entire TabbedPanel's width
    TabbedPanelItem:
        text: 'First_Tab'
        Tabs:

    TabbedPanelItem:
        text: 'Second_Tab'
        Tabs:

    TabbedPanelItem:
        text: 'Third_Tab'
        Tabs:


<Tabs>:
    grid: grid
    ScrollView:
        do_scroll_y: True
        do_scroll_x: False
        size_hint: (1, None)
        height: root.height
        GridLayout:
            id: grid
            cols: 1
            spacing: 10
            padding: 10
            size_hint_y: None
            height: 2500

我已经阅读过在# coding=utf-8 __author__ = 'drakenden' __version__ = '0.1' import kivy kivy.require('1.9.0') # replace with your current kivy version ! from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition from kivy.properties import StringProperty, ObjectProperty,NumericProperty from kivy.uix.tabbedpanel import TabbedPanel from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.utils import platform from kivy.uix.gridlayout import GridLayout from kivy.uix.label import Label from kivy.uix.scrollview import ScrollView class Tabs(ScrollView): def __init__(self, **kwargs): super(Tabs, self).__init__(**kwargs) class Tabba(TabbedPanel): pass class SecondScreen(Screen): pass class ScreenManagement(ScreenManager): pass presentation = Builder.load_file("layout2.kv") class MyApp(App): def build(self): return presentation MyApp().run() 中使用StripLayout但我不知道是否是一个好的解决方案以及如何正确应用它。有什么建议?

1 个答案:

答案 0 :(得分:2)

我已经对您的代码进行了一些实验,在阅读了TabbedPanel文档之后,我发现tab_width指定了标题页的宽度(因为tab_height是高度)。要在你的kivy文件中使用它,你必须添加以下行:

<Tabba>:
    do_default_tab: False
    tab_width: self.parent.width / 3
    background_color: (255, 0, 255, 1.0)
    # I would these three tabs' width filling the entire TabbedPanel's width
    TabbedPanelItem:
    .
    .
    .
    the rest of your kivy file

我们在这一行中添加的是每个标签将是它的父宽度的1/3。

这甚至适用于少于或多于3的标签。如果添加更多标签,则会添加水平滚动条以滚动其他标签。

我希望我能提供帮助。