動きました。
と、いうか作り直しました。
そもそも、ラベル、スライダー、テキストボックスの3個のアイテムを子に持つクラスを、更に3個束ねていたのですが
コレでタイミングエラーが出るなら、全9個のアイテムを1個のクラスでまとめれば良いのでは?
と、考えて作ってしまったのがこちらです。
コード
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.slider import Slider
from kivy.uix.floatlayout import FloatLayout
### Input Color Value
class SlR(Slider):
def on_touch_up(self,touch):
self.parent.tR.text = str(int(self.value))
class TxR(TextInput):
def on_text_validate(self):
value = int(self.text)
if value <= self.parent.max and value >= self.parent.min:
self.parent.sR.value = value
else:
self.text=str(int(self.parent.sR.value))
class SlG(Slider):
def on_touch_up(self,touch):
self.parent.tG.text = str(int(self.value))
class TxG(TextInput):
def on_text_validate(self):
value = int(self.text)
if value <= self.parent.max and value >= self.parent.min:
self.parent.sG.value = value
else:
self.text=str(int(self.parent.sG.value))
class SlB(Slider):
def on_touch_up(self,touch):
self.parent.tB.text = str(int(self.value))
class TxB(TextInput):
def on_text_validate(self):
value = int(self.text)
if value <= self.parent.max and value >= self.parent.min:
self.parent.sB.value = value
else:
self.text=str(int(self.parent.sB.value))
class GridRGBParm(GridLayout):
def __init__(self,**kwargs):
super(GridRGBParm,self).__init__(**kwargs)
self.SetUp()
def SetUp(self):
self.clear_widgets()
self.cols=3
self.min = 0
self.max = 255
self.lR = Label(text='R',size_hint_x=1)
self.sR = SlR(min=self.min, max=self.max, value=self.min,size_hint_x=7)
self.tR = TxR(text=str(self.min),multiline=False,size_hint_x=2)
self.lG = Label(text='G',size_hint_x=1)
self.sG = SlG(min=self.min, max=self.max, value=self.min,size_hint_x=7)
self.tG = TxG(text=str(self.min),multiline=False,size_hint_x=2)
self.lB = Label(text='B',size_hint_x=1)
self.sB = SlB(min=self.min, max=self.max, value=self.min,size_hint_x=7)
self.tB = TxB(text=str(self.min),multiline=False,size_hint_x=2)
self.add_widget(self.lR)
self.add_widget(self.sR)
self.add_widget(self.tR)
self.add_widget(self.lG)
self.add_widget(self.sG)
self.add_widget(self.tG)
self.add_widget(self.lB)
self.add_widget(self.sB)
self.add_widget(self.tB)
class Display(BoxLayout):
orientation='vertical'
def __init__(self,**kwargs):
super(Display,self).__init__(**kwargs)
self.GridRGB = GridRGBParm(size_hint_y=1)
self.add_widget(self.GridRGB)
class MainApp(App):
def build(self):
layout = Display()
return layout
if __name__=='__main__':
MainApp().run()
…冗長ですねえ。全く同じ処理を3回ずつ書いています。
職業プログラマがこんなコード書いたら怒られそうですが、あいにく私は意識低い系です。動けばよかろうなのだ!
0 件のコメント:
コメントを投稿