如何在圆角矩形 and/or 上添加文字更改 kivy 的背景?

How can I add text on my round rectangle and/or change the background on kivy?

主要内容:

from kivymd.app import MDApp

class DeliveryToday(MDApp):
    def build(self):
        return

DeliveryToday().run()

kv

MDScreen :
    canvas.before:
        Color:
            rgba: (.4,.4,.4,1)
        RoundedRectangle:
            size : self.width/2, self.height/3
            pos : self.center_x - self.width/4 , self.center_y - self.height/6                         
            radius: [(40, 40), (40, 40), (40, 40), (40, 40)]

我是kivy的初学者,刚开始制作这个圆角矩形。我想在圆角矩形上添加文字“欢迎”,但我对应该在哪里以及如何添加它感到有点困惑,因为显然它不会在 canvas 上工作,或者会吗? (我是一个 tkinter 人,它在 canvas 上工作,所以有点奇怪)。

我还想将矩形的背景从蓝色更改为蓝色(目前为白色)并尝试了一些东西,例如 background_color 之类的东西,但这似乎也不起作用。

任何关于我如何做这两者的建议都将不胜感激。谢谢!

为了让大家更容易理解,我更改了您的主要布局。还添加到屏幕的黑色背景,以向您展示如何制作它以及为了每个人的眼睛健康 :)(我知道您没有问过但其他人可能需要)您可以根据需要轻松更改矩形或椭圆形的颜色easily.Just 为此更改 rgba。 [R]ed,[G]reen,[B]lue,[A]lpha。因此,让 blue 和 alpha 的值设为 1(它在 0-1 之间变化)。对于这个例子,如果你在屏幕上添加任何标签,你的文本就会出现在屏幕中间。因为Label默认的text_size: self.size 和默认的halign:'center'(水平对齐)和valign:'center'(垂直对齐)。检查下面以将所有这些视为代码:

from kivymd.app import MDApp
from kivy.lang import Builder
kv = Builder.load_string('''
BoxLayout:
    canvas.before:
        Color:
            rgba: 0,0,0,1
        Rectangle:
            size: self.size
            pos: self.pos
    canvas:
        Color:
            rgba: (0,0,1,1)
        RoundedRectangle:
            size : self.width/2, self.height/3
            pos : self.center_x - self.width/4 , self.center_y - self.height/6                         
            radius: [(40, 40), (40, 40), (40, 40), (40, 40)]
    Label:
        text: 'Welcome'
''')

class DeliveryToday(MDApp):
    def build(self):
        return kv

DeliveryToday().run()

关于您的评论问题:[我可以在这里添加其他小部件吗?]

检查下面的代码。我设置了按钮的 background_color 的 alpha 值=.5 让你看看它是如何工作的。您需要 将其 alpha 更改为 0,它会像按钮一样工作。你可以像这样设计自己的按钮 way.But 首先,你应该开始学习 KivyMD 以获得更多按钮(和其他东西)样式。

from kivymd.app import MDApp
from kivy.lang import Builder
kv = Builder.load_string('''
FloatLayout:
    id: layout
    canvas.before:
        Color:
            rgba: 0,0,0,1
        Rectangle:
            size: self.size
            pos: self.pos
    canvas:
        Color:
            rgba: (0,0,1,1)
        RoundedRectangle:
            size : self.width/2, self.height/3
            pos : self.center_x - self.width/4 , self.center_y - self.height/6                         
            radius: [(40, 40), (40, 40), (40, 40), (40, 40)]
    Button:
        size_hint:None,None
        size : layout.width/2, layout.height/3
        pos : layout.center_x - layout.width/4 , layout.center_y - layout.height/6    
        background_color: 1,0,0,.5
        text: 'Welcome'
        on_release: print('Clicked Button')
''')
class DeliveryToday(MDApp):
    def build(self):
        return kv
DeliveryToday().run()

我将 boxlayout 更改为 floatlayout.Because boxlayout 不允许我自由提供其小部件 positions.Other 东西,将 Label 更改为 Button.Lastly 我给 floatlayout 一个 id 并用它来获取它位置和大小。你也可以用不同的方式做到这一点 ways.This 是其中一种方式。