第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Kivy 圓角(僅使用 Python)

Kivy 圓角(僅使用 Python)

SMILET 2022-06-22 18:54:42
我有這個(gè)小 Kivy 應(yīng)用程序(Python 版本:3.7,Kivy 版本:1.11.1):代碼#1from kivy.app import Appfrom kivy.lang import Builderfrom kivy.config import Configfrom kivy.uix.floatlayout import FloatLayoutConfig.set("graphics", "width", "500")Config.set("graphics", "height", "300")kv = """<RoundedCornerLayout@FloatLayout>:    background_color: 0,0,0,0    canvas.before:        Color:            rgba: (.4,.4,.4,1)        RoundedRectangle:            pos: self.pos            size: self.size            radius: [(40, 40), (40, 40), (20, 20), (20, 20)]"""Builder.load_string(kv)class RoundedCornerLayout(FloatLayout):    def __init__(self):        super().__init__()        self.size_hint = (None, None)        self.size = (400, 200)        self.pos_hint = {"center_x": 0.5, "center_y": 0.5}class MainApp(App):    def build(self):        return RoundedCornerLayout()if __name__ == "__main__":    MainApp().run()可愛,不是嗎?現(xiàn)在,讓我們嘗試僅使用 Python 獲得相同的結(jié)果。我正在嘗試使用以下代碼:代碼#2from kivy.app import Appfrom kivy.config import Configfrom kivy.graphics import Colorfrom kivy.graphics import Rectanglefrom kivy.uix.floatlayout import FloatLayoutConfig.set("graphics", "width", "500")Config.set("graphics", "height", "300")class RoundedCornerLayout(FloatLayout):    def __init__(self):        super().__init__()        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, 0)        self.canvas.before.add(Color(.4, .4, .4, 1))        self.canvas.before.add(Rectangle(            pos=self.pos,            size=self.size,            radius=[(40, 40), (40, 40), (20, 20), (20, 20)]))夠公平的,我想。但后來我得到了這個(gè)結(jié)果:在此處輸入圖像描述據(jù)我所知,兩條指令(代碼#1 和代碼#2)都說相同,但方式不同??茖W(xué)證明,事實(shí)并非如此。...所以我想在這里理解的是,我的問題的重點(diǎn)是:Code#1 和 Code#2 之間的功能區(qū)別是什么?為什么他們顯示不同的結(jié)果?將 Code#1“翻譯”為純 Python 代碼的正確方法是什么?忽略這樣一個(gè)事實(shí),即僅保留 kivy 代碼是最簡(jiǎn)單的解決方案。我在這里需要的是理解這種行為,解釋我的理由會(huì)不必要地?cái)U(kuò)展這個(gè)問題,讓我們說你只能控制你所理解的。
查看完整描述

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()


查看完整回答
反對(duì) 回復(fù) 2022-06-22
  • 1 回答
  • 0 關(guān)注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)