2017-11-29 12 views
0

kivyに2つの小さなボタンがあるテキスト入力からなるスピンウィジェットを作成したいとします。テキスト入力に表示される値は、押されたボタンに応じて増減します。kivy Text Sliderからの動作を継承する

これは簡単な作業ですが、マウスのホイールで値を変更することもできます(カーソルがテキスト入力内にある場合は上下にスクロールします)。

テキスト入力にはこのような振る舞いがないので、スライダーのような別のウィジェットから何らかの形で振る舞いを継承することはできますか?もしそうなら、どのように達成されるでしょうか?

EDIT:要求されたよう

、これは今までのコードです:

from kivy.app import App 
from kivy.uix.textinput import TextInput 
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button 

class LoginScreen(BoxLayout): 

    def __init__(self, **kwargs): 
     super(LoginScreen, self).__init__(**kwargs) 
     self.orientation = 'horizontal' 

     self.container_Flow = BoxLayout(orientation = 'horizontal', size_hint = (1,1)) 
     self.text_flow = TextInput(text='500', font_size=40, size_hint = (0.6,1)) 
     self.button_plus = Button(text = '+', size_hint = (0.2,1)) 
     self.button_minus = Button(text = '-', size_hint = (0.2,1)) 
     self.container_Flow.add_widget(self.text_flow) 
     self.container_Flow.add_widget(self.button_plus) 
     self.container_Flow.add_widget(self.button_minus) 

     self.add_widget(self.container_Flow) 
     self.button_plus.bind(on_press = self.calc_plus) 
     self.button_minus.bind(on_press = self.calc_minus) 

    def calc_plus(self, button_plus): 
     Q = int(self.text_flow.text) 
     self.text_flow.text = str(Q + 25) 
    def calc_minus(self, button_minus): 
     Q = int(self.text_flow.text) 
     self.text_flow.text = str(Q - 25) 

class MyApp(App): 

    def build(self): 
     return LoginScreen() 

if __name__ == '__main__': 
    MyApp().run() 
+0

あなたのコードを示しています。 – eyllanesc

答えて

1
#Here is an example. 

from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.textinput import TextInput 
from kivy.app import App 

class Example(BoxLayout): 

    def __init__(self, **kwargs): 
     super(Example, self).__init__(**kwargs) 

     self.orientation = 'horizontal' 
     self.layout = BoxLayout(orientation = 'horizontal', size_hint = (1,1)) 
     self.text = MyText(text= '500', font_size=40, size_hint = (0.6,0.5), multiline=True) 

     self.layout.add_widget(self.text) 

     self.add_widget(self.layout) 


class MyText(TextInput): # MyText inherits from TextInput class 
    def on_touch_down(self, touch): # method to see if mouse is down/moving 
     if self.collide_point(*touch.pos): # only works if in the textinput region 
      if touch.button == 'scrollup': #check mouse wheel up 
       self.calc_plus() 
      elif touch.button == 'scrolldown': #check mouse wheel down 
       self.calc_minus() 
    def calc_plus(self): 
     Q = int(self.text) 
     self.text = str(Q + 25) 
    def calc_minus(self): 
     Q = int(self.text) 
     self.text = str(Q - 25) 

class Test(App): 
    def build(self): 
     return Example() 

if __name__ == '__main__': 
    Test().run() 
+0

優秀、ありがとうございます。 – user3060854

関連する問題