python中的串联变量

python中的串联变量,python,concatenation,kivy,Python,Concatenation,Kivy,我创建了一个变量colonne,它返回列的编号 我试着把它放在我的函数选择中,就像这样: self.ids.image+colonne+_1 以下是我的完整观点: Button: on_press: root.click_colonne(1) pos: 25,25 size: 100, 500 opacity:0 Image: source: 'image.png' pos: 0,0 size: 150,150 id: image

我创建了一个变量
colonne
,它返回列的编号

我试着把它放在我的函数选择中,就像这样:

self.ids.image+colonne+_1
以下是我的完整观点:

Button:
    on_press: root.click_colonne(1)
    pos: 25,25
    size: 100, 500
    opacity:0
Image:
    source: 'image.png'
    pos: 0,0
    size: 150,150
    id: image1_1
Image:
    source: 'image.png'
    pos: 0,100
    size: 150,150
    id: image1_2
Image:
    source: 'image.png'
    pos: 0,200
    size: 150,150
    id: image1_3
Image:
    source: 'image.png'
    pos: 0,300
    size: 150,150
    id: image1_4
Image:
    source: 'image.png'
    pos: 0,400
    size: 150,150
    id: image1_5



Button:
    on_press: root.click_colonne(2)
    pos: 125,25
    size: 100, 500
    opacity:0
Image:
    source: 'image.png'
    pos: 100,0
    size: 150,150
    id: image2_1
Image:
    source: 'image.png'
    pos: 100,100
    size: 150,150
    id: image2_2
Image:
    source: 'image.png'
    pos: 100,200
    size: 150,150
    id: image2_3
Image:
    source: 'image.png'
    pos: 100,300
    size: 150,150
    id: image2_4
Image:
    source: 'image.png'
    pos: 100,400
    size: 150,150
    id: image2_5
以下是我的完整功能:

def click_colonne(self, colonne):
    if self.ids.image+colonne+_1.source == "image.png":
        self.ids.image+colonne+_1.source = "image_rouge.png"
    elif self.ids.image+colonne+_2.source == "image.png":
        self.ids.image+colonne+_2.source = "image_rouge.png"
    elif self.ids.image+colonne+_3.source == "image.png":
        self.ids.image+colonne+_3.source = "image_rouge.png"
    elif self.ids.image+colonne+_4.source == "image.png":
        self.ids.image+colonne+_4.source = "image_rouge.png"
    elif self.ids.image+colonne+_5.source == "image.png":
        self.ids.image+colonne+_5.source = "image_rouge.png"
这里是错误

File "main.py", line 36
self.ids.image+colonne+_5.source = "image_rouge.png"
^
SyntaxError: can't assign to operator

有人能给我正确的语法吗?

串联不会生成变量名,您只是在添加它的值,而不能在运算符=。更好的选择是将名称构建为字符串,并通过ids字典使用它

self.ids["image{}_{}".format(colone, 5)].source = "image_rouge.png"
另一个解决办法是

getattr(self.ids, "image{}_{}".format(colone, 5)).source = "image_rouge.png"

下面是另一个在Python 3.6及更高版本中有效的解决方案:

def click_colonne(self, colonne):
    for i in range(1, 6):
        if self.ids[f"image{colone}_{i}"].source == "image.png":
            self.ids[f"image{colone}_{i}"].source = "image_rouge.png"
            break

f”“
替换允许您在引号内添加变量的
.format()
函数。

您遇到了什么错误?还有什么是我把它添加到post@Antoine553
self.ids.image+colonne+\u 5.source
的含义是什么?@Jaba\u 1是因为图像的id是image1\u 1(对于column=1 number=1),通过原始连接可能更容易读取。