2016-10-26 6 views
0

ボタンの位置をリストのインデックスに関連付けようとしています。私は多くの名前を含む1つのリストと、多くの数値を含む別のリストを持っています。私はそのボタンの位置(または他のパラメータ)を取得し、そのボタンの位置をリストのインデックスに関連付ける関数を作成したいと思います。位置としての変数関数

たとえば、最初のボタンをクリックすると、関数はリストの最初の名前を取り、もう一方のリストの最初の数値を取ります。だから最後のボタンをクリックし、関数はリストの最後の名前と最後の数値を別のリストに取ります。

私は値として多くの機能を作成しましたが、これを行うにはもっと知的な方法があると思います。あなたのケースでは

の.py

n = ["a", "b", "c", "d"] 
v = [10, 20, 30, 40] 
x = 0 
y = [] 
i = 0 
class PrimeiroScreen(Screen): 
    def __init__(self, **kwargs): 
     self.name = 'um' 
     super(Screen,self).__init__(**kwargs) 

    def fc1(self, *args):#I don't know how to make i variable as button position 
     global x 
     x = x + v[i] 
     y.append(n[i]) 
     print (x) 
     print (y) 

.kv

<PrimeiroScreen>: 
    StackLayout: 
     orientation: 'tb-lr' 
     GridLayout: 
      cols: 2 
      spacing: 10, 10 
      #padding: 0, 0 
      size_hint: (1,.8) 
      Button: 
       text: "[b]Btn1[/b]" 
       markup: True 
       on_press: root.fc1() 
      Button: 
       text: "[b]Btn2[/b]" 
       font_size: '20dp' 
       markup: True 
       on_press: root.fc1() 
      Button: 
       text: "[b]Btn3[/b]" 
       font_size: '20dp' 
       markup: True 
       on_press: root.fc1() 
      Button: 
       text: "[b]Btn4[/b]" 
       font_size: '20dp' 
       markup: True 
       on_press: root.fc1() 
+0

Observableパターンを使用する必要があります。私が覚えているように、kivyはすでに観測されたコレクションの基本型を持っています。 – pylover

+0

私はこれが何であるか分かりません。私はどこの情報を見つけることができるか知っていますか? – victorcd

答えて

1

私はちょうどFC1関数に

.... 

    GridLayout: 
     cols: 2 
     spacing: 10, 10 
     #padding: 0, 0 
     size_hint: (1,.8) 
     Button: 
      text: "[b]Btn1[/b]" 
      markup: True 
      on_press: root.fc1(1) #woohoo!!! 
     Button: 
      text: "[b]Btn2[/b]" 
      font_size: '20dp' 
      markup: True 
      on_press: root.fc1(2) 
     Button: 
      text: "[b]Btn3[/b]" 
      font_size: '20dp' 
      markup: True 
      on_press: root.fc1(3) 
     Button: 
      text: "[b]Btn4[/b]" 
      font_size: '20dp' 
      markup: True 
      on_press: root.fc1(4) 

をボタンの位置を送信し、今あなたが持っている:

def fc1(self, i): 
    global x 

    x = x + v[i] 
    y.append(n[i]) 
    print (x) 
    print (y) 
+1

非常に感謝!これへの最も簡単な方法は、私のために働いた。 – victorcd

関連する問題