【问题标题】:How to access kivy button ids in py file?如何访问 py 文件中的 kivy 按钮 ID?
【发布时间】:2019-11-15 06:15:03
【问题描述】:

我正在尝试确定选择了哪个按钮,然后如果选择了该按钮,请将其分配给我的 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"

希望以上内容很清楚,如果需要更多解释,请告诉我

【问题讨论】:

  • 不确定你想做什么。你想对所有的Buttons 做点什么,还是只用绿色的? “将 a-f 存储在变量中”是什么意思?你说的是清单吗?您想将Buttons 存储在列表中吗?还是只是字母 a-f?
  • 我只想知道按下了哪些按钮(即绿色),并且对于每个绿色按钮,我想创建一个等于“是”的变量。例如,如果 self.ids.a.back_color 被按下,我想创建一个名为 a 的变量并将其设置为“yes”。这有意义吗?

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


【解决方案1】:

您可以创建六个变量('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”)的形式访问任何值。

【讨论】:

  • 谢谢,这很好用。我在访问 ID(a 到 f)时遇到问题,但 self.ids[x].back_color 是我所追求的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-05
  • 1970-01-01
  • 2012-10-02
  • 1970-01-01
  • 2015-07-24
相关资源
最近更新 更多