1 回答

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
您有 2 個(gè)錯(cuò)誤:
該項(xiàng)目不是 Rectangle 而是 RoundedRectangle。
在 .kv 中,如果繪畫中使用的屬性因綁定而發(fā)生更改,則會(huì)重新繪制畫布,但是在 Python 中,您必須顯式地進(jìn)行該綁定。
from kivy.app import App
from kivy.config import Config
from kivy.graphics import Color, RoundedRectangle
from kivy.uix.floatlayout import FloatLayout
Config.set("graphics", "width", "500")
Config.set("graphics", "height", "300")
class RoundedCornerLayout(FloatLayout):
def __init__(self):
super().__init__()
with self.canvas.before:
Color(0.4, 0.4, 0.4, 1)
self.rect = RoundedRectangle(
pos=self.pos,
size=self.size,
radius=[(40, 40), (40, 40), (20, 20), (20, 20)],
)
self.bind(pos=lambda obj, pos: setattr(self.rect, "pos", pos))
self.bind(size=lambda obj, size: setattr(self.rect, "size", size))
self.size_hint = (None, None)
self.size = (400, 200)
self.pos_hint = {"center_x": 0.5, "center_y": 0.5}
self.background_color = 0, 0, 0, 1
class MainApp(App):
def build(self):
return RoundedCornerLayout()
if __name__ == "__main__":
MainApp().run()
添加回答
舉報(bào)