Kivy标签面板不会改变背景

2024-04-16 07:40:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个kivy应用程序,我可以在python文件中使用Window.clearcolor创建一个白色背景,如kivy: change background color to white 中所建议的那样。然后我添加了一个选项卡式面板,使背景变回黑色。在

我试图使用canvascanvas.before,和{}使其恢复为白色,但它仍然呈现黑色(或者更确切地说是深灰色)。在

可复制玩具示例

import kivy
from kivy.lang import Builder
from kivy.core.window import Window


kivy.require('1.1.0')

from kivy.app import App

presentation = Builder.load_file("works.kv")
class TestApp(App):
    def build(self):
        Window.clearcolor = (1, 1, 1, 1)
        return presentation




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

带kv文件:

^{pr2}$

但当我向kv文件添加选项卡式面板时,如下图所示,背景显示为黑色(以下截图):

#:kivy 1.10.0
BoxLayout:
    TabbedPanel:
        do_default_tab: False
        background_color: (1, 1, 1, 1)

        TabbedPanelItem:
            text: 'Main'

            GridLayout:
                cols: 2

                Label:
                    text:'just to force spacing'
                Button:
                    text: 'Hello World'

        TabbedPanelItem:
            text: 'Tab 2'

截图:

添加面板之前:

window with white background

添加面板后(我希望面板有一个白色的背景,在这个玩具示例中,文本将是白底白字,但我已经在我的应用程序中处理过了):

Panel with grey background

试过了

<Main>:
    name: 'mscreen'
    canvas.before:
        Color:
            rgba: 1, 1, 1, 1
        Rectangle:
            pos: self.pos
            size: self.size

    TabbedPanel:
        do_default_tab: False

        TabbedPanelItem:
            text: 'Main'

            GridLayout: ...

同样的

<Main>:
    name: 'mscreen'
    canvas:
        Color:
            rgba: 1, 1, 1, 1
        Rectangle:
            pos: self.pos
            size: self.size

    TabbedPanel:
        do_default_tab: False

        TabbedPanelItem:
            text: 'Main'

            GridLayout:...

如果我正确阅读Kivy's documentation on TabbedPanels,我应该可以使用背景色,但这也不起作用:

TabbedPanel:
    do_default_tab: False

    TabbedPanelItem:
        text: 'Main'
        background_color: 1,1,1,1

以及

TabbedPanel:
    do_default_tab: False
    background_color:1,1,1,1

    TabbedPanelItem:
        text: 'Main'

相关的:我知道其他人都在与Kivy背景抗争。据我所知,我已尝试过他们的建议。在

不太直接相关:


Tags: textselffalsedefault面板maindotab
1条回答
网友
1楼 · 发布于 2024-04-16 07:40:56

解决方案

使用提供的kv文件和一些附加文件。在

kv文件-白色标签面板内容

#:kivy 1.10.0
BoxLayout:
    TabbedPanel:
        do_default_tab: False
        background_color: (1, 1, 1, 1)    # White colour
        border: [0, 0, 0, 0]
        background_image: 'path/to/background/image'

        TabbedPanelItem:
            text: 'Main'

            GridLayout:
                cols: 2

                Label:
                    text:'just to force spacing'
                Button:
                    text: 'Hello World'

        TabbedPanelItem:
            text: 'Tab 2'

蓝色选项卡式面板内容

要更改主选项卡面板内容的外观,请执行以下操作:

^{pr2}$

输出

Img01 - White Tabbed Panel contentImg02 - Blue Tabbed Panel content

相关问题 更多 >