…実行結果は前回から変わらないので載せないのですが…
コード
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 SlPram(Slider):
def on_touch_up(self,touch):
self.parent.t.text = str(int(self.value))
class TxPram(TextInput):
def on_text_validate(self):
value = int(self.text)
if value <= self.parent.max and value >= self.parent.min:
self.parent.s.value = value
else:
self.text=str(int(self.parent.s.value))
class GridPram(GridLayout):
def __init__(self,**kwargs):
super(GridPram,self).__init__(**kwargs)
self.SetUp()
def SetUp(self):
self.clear_widgets()
self.cols=3
self.min = 0
self.max = 100
self.l = Label(text='none',size_hint_x=1)
self.s = SlPram(min=self.min, max=self.max, value=self.min,size_hint_x=7)
self.t = TxPram(text=str(self.min),multiline=False,size_hint_x=2)
self.add_widget(self.l)
self.add_widget(self.s)
self.add_widget(self.t)
def SetName(self,name):
self.l.text = name
def GetValue(self):
return int(self.parent.s.value)
def SetRange(self,range_min,range_max):
if range_max<range_min:
self.min = range_max
self.max = range_min
else:
self.min = range_min
self.max = range_max
self.s.min = self.min
self.s.max = self.max
self.s.value = self.min
self.t.text=str(self.min)
class Display(BoxLayout):
orientation='vertical'
def __init__(self,**kwargs):
super(Display,self).__init__(**kwargs)
self.GridR = GridPram(size_hint_y=1)
self.GridG = GridPram(size_hint_y=1)
self.GridB = GridPram(size_hint_y=1)
self.GridR.SetName('R')
self.GridG.SetName('G')
self.GridB.SetName('B')
self.GridR.SetRange(0,255)
self.GridG.SetRange(0,255)
self.GridB.SetRange(255,0)
self.add_widget(self.GridR)
self.add_widget(self.GridG)
self.add_widget(self.GridB)
class MainApp(App):
def build(self):
layout = Display()
return layout
if __name__=='__main__':
MainApp().run()
冗長な部分が気になって、まとめてみたのですが…
コレで動くって事は当初動かなかった理由は単純に BoxLayout のバグだったのでは?
モヤッとする解決ですねえ。
0 件のコメント:
コメントを投稿