This commit is contained in:
yumoqing 2021-11-22 08:46:40 +08:00
parent 82c6652ad6
commit 62984b8501
2 changed files with 108 additions and 3 deletions

108
kivyblocks/clickable.py Normal file
View File

@ -0,0 +1,108 @@
from functools import partial
from kivy.logger import Logger
from kivy.uix.behaviors import TouchRippleButtonBehavior
from kivy.graphics import Color, Rectangle
from kivy.uix.boxlayout import BoxLayout
from kivy.factory import Factory
from kivy.properties import ObjectProperty, StringProperty, BooleanProperty
from kivyblocks.ready import WidgetReady
from kivyblocks.bgcolorbehavior import BGColorBehavior
from kivyblocks.utils import CSize
from kivyblocks.baseWidget import Box
from kivyblocks.widget_css import WidgetCSS
class ClickableBox(TouchRippleButtonBehavior, Box):
def __init__(self,
border_width=1,
**kw):
super(ClickableBox, self).__init__(
padding=[border_width,
border_width,
border_width,
border_width],
radius=radius,
**kw)
self.border_width = border_width
def on_press(self,o=None):
pass
class ClickableText(ClickableBox):
text = StringProperty(' ')
def __init__(self, **kw):
super(ClickableText, self).__init__(**kw)
self.txt_w = Text(text=self.text, i18n=True)
self.add_widget(self.txt_w)
def on_text(self, o, txt):
self.txt_w.text = txt
class ToggleText(ClickableText):
"""
construct commad
ToggleText(**{
"text":"test",
"on_css":"selected",
"off_css":"normal"
})
select_state = BooleanProperty(False)
on_css = StringProperty('default')
off_css = StringProperty('default')
def __init__(self, **kw):
super(ToggleText, self).__init__(**kw)
def on_press(self, o=None):
if self.select_state = if self.select_state?False else True
def on_select_state(self, o, f):
if f:
self.clscss = self.on_css
else:
self.clscss = self.off_css
class ClickableImage(ClickableBox):
source=StringProperty('none')
class ToggleImage(
class PressableBox(TouchRippleButtonBehavior, Box):
normal_css = StringProperty("default")
actived_css = StringProperty("default")
box_actived = BooleanProperty(False)
def __init__(self,
border_width=1,
user_data=None,
radius=[],
**kw):
super(PressableBox, self).__init__(
padding=[border_width,
border_width,
border_width,
border_width],
radius=radius,
**kw)
self.border_width = border_width
self.user_data = user_data
self.actived = False
self.csscls = self.normal_css
def active(self, flag):
self.box_actived = flag
def on_box_actived(self, o, v):
if self.box_actived:
self.csscls = self.actived_css
else:
self.csscls = self.normal_css
def on_press(self,o=None):
self.box_actived = True
def setValue(self,d):
self.user_data = d
def getValue(self):
return self.user_data

View File

@ -18,7 +18,6 @@ class PressableBox(TouchRippleButtonBehavior, Box):
box_actived = BooleanProperty(False)
def __init__(self,
border_width=1,
color_level=-1,
user_data=None,
radius=[],
**kw):
@ -56,7 +55,6 @@ class PressableBox(TouchRippleButtonBehavior, Box):
"""
ToggleItems format:
{
color_level:
radius:
unit_size:
items_desc:
@ -66,7 +64,6 @@ ToggleItems format:
"""
class ToggleItems(BoxLayout, WidgetCSS):
def __init__(self,
color_level=1,
radius=[],
orientation='horizontal',
unit_size=3,