在Kivy中定位选项卡式面板标题

时间:2019-06-07 20:55:24

标签: python kivy kivy-language

我正在尝试创建自定义TabbedPanel来控制其外观和其他功能。但是我似乎无法定位面板。在我的示例中,我将条带涂成绿色以说明此问题。我确实看过这个question,但似乎无法弄清楚。尝试将所有填充都设置为零,但没有成功。

面板稍微偏移,并且比条带略小(如绿色所示)。如何更改此设置并删除/控制填充。

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout

Builder.load_string('''

<Screen>:
    canvas.before:
        Color:
            rgba: (0.8, 0.5, 1, 1)
        Rectangle:
            size: self.size
            pos: self.pos
    background_normal: ''
    orientation: 'vertical'
    padding: 50

    CustomPanel:
        CustomPanelItem:
            Label:
                text: 'Hello there'


<CustomPanel@TabbedPanel+CustomStrip>:
    do_default_tab: False
    tab_width: self.width 
    padding: 0, 0, 0, 0


<CustomPanelHeader@TabbedPanelHeader>:
    text: 'Long Text for a Tab'
    padding: 0, 0


<CustomPanelItem@TabbedPanelItem+CustomPanelHeader>:
    text: 'Hello World Hello World Hello World'
    padding: 0, 0


<CustomStrip@TabbedPanelStrip>:
    canvas:
        Color:
            rgba: (0, 1, 0, 1) # green
        Rectangle:
            size: self.size
            pos: self.pos

''')


class Screen(BoxLayout):
    pass


class TestApp(App):

    def build(self):
        return Screen()


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

1 个答案:

答案 0 :(得分:1)

问题1-1像素左侧

  

但是左侧似乎仍然有1像素...?

根本原因-左侧1像素

这是由于标签所使用的images实际上是一个按钮。

解决方案-左侧1像素

使用<TabbedPanelHeader>background_normal: ''覆盖rgba颜色的background_color:覆盖类规则

问题2-下方有腿部空间

  

...我该如何处理下方的腿部空间?

说明

我认为剥离/分离器可能是设计使然。

问题

  

面板略微偏移,并且比条带略小   (如绿色所示)。我该如何改变和   删除/控制填充。

解决方案

覆盖类规则padding中的<StripLayout>,并删除对padding的所有引用。

摘要

...

<CustomPanelItem@TabbedPanelItem+CustomPanelHeader>:
    text: 'Hello World Hello World Hello World'

<StripLayout>
    padding: 0, 0, 0, 0

<TabbedPanelHeader>:
    background_normal: ''
    background_color: 0, 0, 1, 1    # blue

<CustomStrip@TabbedPanelStrip>:
    canvas:
...

输出

TabbedPanelheader - removed images StripLayout - padding