Ткинтер как получить адрес кнопки изображения - PullRequest
0 голосов
/ 27 декабря 2018

Я пишу программу для школьного проекта и дошел до того, что мне нужно проверить изображение на моей кнопке, чтобы я мог запустить его с помощью команды if следующим образом:

root=Tk()

flag = PhotoImage(file='flag.png')

box = PhotoImage(file='box.png')

def function(event):
    if(button.cget('image')==flag):
        button.config(image=box)
    else:
        button.config(image=flag)


button=Button(root)
button.config(image=box)
button.bind('<ButtonRelease>', function)
button.pack()
root.mainloop()

Я ожидал, что он будет менять изображение между флагом и полем каждый раз, когда я нажимаю на кнопку, но вместо этого он просто меняет изображение, чтобы пометить первый раз, когда я щелкаю, и не отвечает на остальные нажатия

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Вам просто нужно сделать тест как if(button.cget('image')==str(flag)): (обратите внимание на добавление str() к изображению).Параметр image - это просто строка, содержащая автоматически сгенерированное имя объекта изображения в среде Tcl / Tk;объект изображения Python преобразуется в эту строку, но не содержит кода, необходимого для осуществления сравнения со строками, поэтому необходимо сделать это преобразование явным.

0 голосов
/ 27 декабря 2018

Попробуйте этот код

root=Tk()

flag = PhotoImage(file='Denaro.gif')

box = PhotoImage(file='Andre.gif')

def function(event):
    if(button.cget('image')=='pyimage1'):
        button.config(image=box)
    else:
        button.config(image=flag)


button=Button(root)
button.config(image=box)
button.bind('<ButtonRelease>', function)
button.pack()
root.mainloop()
...