我正在使用tkinter对每次按下按钮时显示新图像的小事进行编码,但它不会多次循环。
from tkinter import *
root=Tk()
image1=PhotoImage(file="SCIMG_Gagagigo.png")
image2=PhotoImage(file="SCIMG_7_Coloured_Fish.png")
image3=PhotoImage(file="SCIMG_Jerry_Beans_Man.png")
image4=PhotoImage(file="SCIMG_Axe_Raider.png")
image5=PhotoImage(file="SCIMG_Guardian_of_the_Throne_Room.png")
image6=PhotoImage(file="SCIMG_Alien_Shocktrooper.png")
image7=PhotoImage(file="SCIMG_Evilswarm_Heliotrope.png")
image8=PhotoImage(file="SCIMG_Alexandrite_Dragon.png")
def change():
for a in range(4):
array.append(array[0])
array.pop(0)
b1=Button(image=array[0])
b2=Button(image=array[1])
b3=Button(image=array[2])
b4=Button(image=array[3])
b1.grid(row=0,column=0)
b2.grid(row=0,column=1)
b3.grid(row=1,column=0)
b4.grid(row=1,column=1)
array=[image8,image7,image6,image5,image4,image3,image2,image1]
b1=Button(image=array[0],command=change)
b2=Button(image=array[1],command=change)
b3=Button(image=array[2],command=change)
b4=Button(image=array[3],command=change)
b1.grid(row=0,column=0)
b2.grid(row=0,column=1)
b3.grid(row=1,column=0)
b4.grid(row=1,column=1)
root.mainloop()
答案 0 :(得分:1)
这是因为没有command
设置为您的新Button
。
def change():
for a in range(4):
array.append(array[0])
array.pop(0)
# Change start.
b1=Button(image=array[0],command=change)
b2=Button(image=array[1],command=change)
b3=Button(image=array[2],command=change)
b4=Button(image=array[3],command=change)
# Change end.
b1.grid(row=0,column=0)
b2.grid(row=0,column=1)
b3.grid(row=1,column=0)
b4.grid(row=1,column=1)
然而,这不是一个好的解决方案。
而是配置图像:
def change():
for a in range(4):
array.append(array[0])
array.pop(0)
b1.configure(image=array[0])
b2.configure(image=array[1])
b3.configure(image=array[2])
b4.configure(image=array[3])
替换此
for a in range(4):
array.append(array[0])
array.pop(0)
与
array = array[4:] + array[:4]
答案 1 :(得分:1)
我无法理解为什么每次都会创建一个新按钮。您只需编辑他们的图片:
def change():
for a in range(4):
array.append(array[0])
array.pop(0)
b1.configure(image=array[1])
b2.configure(image=array[2])
b3.configure(image=array[3])
b4.configure(image=array[4])
我还建议您使用一些用于循环和数组,而不是逐个创建PhotoImage和Button元素。