这只是按钮数组的初始代码,它们相互影响。我不明白为什么我不能理解这个定义!在
from tkinter import *
import tkinter.messagebox
from tkinter import ttk
def changeImage(Num):
global buttonOn
global buttonOff
if Num == 1:
if button1(image) == buttonOn:
button1.config(image=buttonOff)
else:
button1.config(image=buttonOn)
root = Tk()
root.geometry('155x190')
root.title("Tile Turner")
buttonOn = PhotoImage(file="buttonPic.gif")
buttonOff = PhotoImage(file="buttonPic2.gif")
button1 = Button(image=buttonOn, width=20, height=20, command=changeImage(1))
buttonQuit = Button(text="Quit", width=10, height=0, command=root.destroy)
app.grid(column=0, row=0)
button1.grid(column=2, row = 3)
buttonQuit.grid(column=3, row = 10, columnspan = 4)
root.mainloop()
我的定义错误在按钮1:
^{pr2}$任何帮助都将不胜感激!在
您需要保留对图像的引用,以便可以在事件处理程序中切换它:
尝试在您的
def changeImage(Num)
上方声明button1
(和其他人)。Python自上而下读取,因此即使函数没有被调用,也应该在到达该点之前声明所有内容。在在这一行
调用函数
changeImage
,并将1
作为参数传入。然后对该函数求值,结果(在本例中是None
)传递给Button
构造函数的command=...
默认参数。当然,这会导致您得到NameError
,因为您在实际将其传递给按钮构造函数之前调用了changeImage
,即button1
还不存在,因为它等待changeImage
函数完成后,才能继续构造Button
实例。在你想要这样的东西:
^{pr2}$这将创建一个新函数,当调用该函数时,该函数只需使用适当的参数调用
changeImage
。在为了进一步阐述lambda,上面的语句或多或少是简写的
相关问题 更多 >
编程相关推荐