如何在py文件中访问kivy按钮ID?

时间:2019-11-14 16:13:03

标签: python python-3.x kivy kivy-language

我正在尝试找出已选择了哪个按钮,然后如果已选择了该按钮,请将其分配给我的python文件中的变量,但是我不确定如何访问该按钮的ID。

下面的按钮从蓝色[0,0,1,0]开始,然后按下时,它们变成绿色[0,1,0,1]。我下面的代码成功地确定了哪些按钮是绿色的,然后我有了打印功能来显示其正常工作。在这里,print(self.ids)是我要访问每个按钮的每个id(从a到f)并将a-f存储在变量中的地方。

class WhatButton(Screen):
    back_color = ObjectProperty()

    def button_pressed(self):
        buttons = [self.ids.a.back_color, self.ids.b.back_color, self.ids.c.back_color,
                          self.ids.d.back_color, self.ids.e.back_color, self.ids.f.back_color]
        counter = 0
        for x in buttons:
            if x == [0, 1, 0, 1]:
                counter += 1
                print(self.ids)
            else:
                pass

        if counter == 0:
            self.none_selected()
        else:
            sm.current = "thank you"

希望上面的内容很清楚,如果需要更多说明,请告诉我

1 个答案:

答案 0 :(得分:0)

您可以创建六个变量(从“ a”到“ f”),并将它们最初都设置为“ no”。然后在您的button_pressed()方法中将绿色的颜色更改为“是”。

我相信一种更好的方法是使用“ a”到“ f”作为键来创建值的字典。这是执行此操作的代码的修改版本:

def button_pressed(self):
    counter = 0
    self.selected = {}
    for x in ['a', 'b', 'c', 'd', 'e', 'f']:
        if self.ids[x].back_color == [0, 1, 0, 1]:
            counter += 1
            self.selected[x] = 'yes'
        else:
            self.selected[x] = 'no'
    print(self.selected)

    if counter == 0:
        self.none_selected()
    else:
        sm.current = "thank you"

使用这种方法,您可以访问self.selected['a']形式的任何值(或任何'a'到'f')。