如何通过纯Python在Kivy中的背景颜色后添加白色边框?

问题描述 投票:0回答:1

下面的代码有效,我可以清楚地看到 takim_isimleri_box BoxLayout 的蓝色 Color(0, 0.525, 0.953, 1) 背景 基本代码:

from kivy.graphics import Color, RoundedRectangle, Line
from kivy.uix.boxlayout import BoxLayout

takim_isimleri_box = BoxLayout()
with takim_isimleri_box.canvas.before:
    Color(0, 0.525, 0.953, 1)  # Background color 
    takim_isimleri_box.rect = RoundedRectangle(size=takim_isimleri_box.size, pos=takim_isimleri_box.pos, radius=[10, 10, 10, 10])

def update_rect2(instance, value):
    instance.rect.size = instance.size
    instance.rect.pos = instance.pos
takim_isimleri_box.bind(size=update_rect2, pos=update_rect2)  

我想通过纯Python在Kivy中的背景颜色后添加白色边框? 我可以这样做吗?

我尝试过,我向 Chatgpt 询问它,它推荐了我下面的代码,但没有成功。 聊天点:

from kivy.graphics import Color, RoundedRectangle, Line
from kivy.uix.boxlayout import BoxLayout

takim_isimleri_box = BoxLayout()

with takim_isimleri_box.canvas.before:
    Color(0, 0.525, 0.953, 1)  # Background color 
    takim_isimleri_box.rect = RoundedRectangle(size=takim_isimleri_box.size, pos=takim_isimleri_box.pos, radius=[10, 10, 10, 10])

with takim_isimleri_box.canvas.after:
    Color(1, 1, 1, 1)  # White color for the border
    Line(rectangle=(takim_isimleri_box.x, takim_isimleri_box.y, takim_isimleri_box.width, takim_isimleri_box.height), width=1.5)

def update_rect2(instance, value):
    instance.rect.size = instance.size
    instance.rect.pos = instance.pos

takim_isimleri_box.bind(size=update_rect2, pos=update_rect2)

上面的代码不起作用。没有白色边框。我只看到蓝色背景,没有白色边框。

非常感谢

python python-3.x kivy kivymd
1个回答
0
投票

这是您要找的吗?

import kivy
from kivy.graphics import Color, Line, RoundedRectangle
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout


class MyApp(App):

    def build(self):
        box = BoxLayout()
        with box.canvas:
            Color(0, 0, 1)
            RoundedRectangle(size=box.size, pos=box.pos)
            Color(1, 1, 1)
            Line(rectangle=[box.x, box.y, box.width, box.height], width=10)
        return box


if __name__ == '__main__':
    MyApp().run()
© www.soinside.com 2019 - 2024. All rights reserved.