Zmiana koloru Canvas

0

Witam.

Wymyśliłem sobie takie cusik:

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.properties import NumericProperty,ListProperty #, StringProperty

koLay = FloatLayout( size_hint = (1,1))

bgColor = (0,0,1,1)
gnSET_COL_BTN_BRD = 10

class MyColBtn(Button):
	lpBtnCol = ListProperty(bgColor)
	npBtBd = NumericProperty(gnSET_COL_BTN_BRD)
	Builder.load_string('''<MyColBtn>
	canvas.after:
		Color:
			rgba: root.lpBtnCol
		Rectangle:
			pos: self.pos[0] + root.npBtBd, self.pos[1] + root.npBtBd
			size: self.size[0] - root.npBtBd * 2, self.size[1] - root.npBtBd * 2''')

koBtn = MyColBtn( size_hint = (.3,.1), pos = (100,100),) # background_normal = '')

koLay.add_widget(koBtn)

runTouchApp(koLay)
quit()

Jak zmienić kolor dla tego canvas zawartego w pliku kv wewnątrz klasy. Oczywiście zmienić później, gdy program już działa.

Pozdrawiam
Radek Głębicki

1

Twój kolor w lpBtnCol to property, więc jak sobie go zmodyfikujesz to zmieni się też kolor:

from kivy.lang import Builder
from kivy.app import runTouchApp
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button
from kivy.properties import NumericProperty,ListProperty #, StringProperty
from kivy.clock import Clock

koLay = FloatLayout( size_hint = (1,1))

def my_callback(dt):
	koBtn.lpBtnCol = (1,0,1,1)

bgColor = (0,0,1,1)
gnSET_COL_BTN_BRD = 10

class MyColBtn(Button):
	lpBtnCol = ListProperty(bgColor)
	npBtBd = NumericProperty(gnSET_COL_BTN_BRD)
	Builder.load_string('''<MyColBtn>
	canvas.after:
		Color:
			rgba: root.lpBtnCol
		Rectangle:
			pos: self.pos[0] + root.npBtBd, self.pos[1] + root.npBtBd
			size: self.size[0] - root.npBtBd * 2, self.size[1] - root.npBtBd * 2''')

koBtn = MyColBtn( size_hint = (.3,.1), pos = (100,100),) # background_normal = '')

koLay.add_widget(koBtn)
Clock.schedule_once(my_callback, 2)
runTouchApp(koLay)

1 użytkowników online, w tym zalogowanych: 0, gości: 1