可变函数作为位置

时间:2016-10-26 10:48:23

标签: python kivy

我试图将按钮的位置与列表的索引相关联。我有一个列表包含许多名称,另一个列表包含许多数值。我想创建一个函数来获取其按钮的位置(或任何其他参数),并将其按钮位置与列表的索引相关联。

例如:当我单击第一个按钮时,该函数将获取列表的第一个名称,并获取另一个列表的第一个数字值。所以我点击了最后一个按钮,该函数获取列表的姓氏,最后一个数值取另一个列表。

我创建了许多函数作为值,但我认为有更聪明的方法来做到这一点。

的.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()

1 个答案:

答案 0 :(得分: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)