我在一个窗口中放了9个按钮。每个按钮上都有一张图片,我想在点击按钮时更改图片。
我所看到的所有方法都太复杂了,我无法理解(lambda,self等),所以我想知道是否有一个简单的方法。
到目前为止,这是我的三个按钮:
tl=Button(root)
tm=Button(root)
tr=Button(root)
photo1=PhotoImage(file="/Users/apple/Desktop/images Tkinter/arrowhead.gif")
photo2=PhotoImage(file="/Users/apple/Desktop/images Tkinter/arrowhead_plus.gif")
tl.config(image=photo1,width="100",height="100",command=function)
tl.grid(row=1, column=1)
tm.config(image=photo1,width="100",height="100")
tm.grid(row=1, column=2)
tr.config(image=photo1,width="100",height="100")
tr.grid(row=1, column=3)
'功能'是?我不希望它成为:
def function():
tl.config(image=photo2,width="100",height="100",command=function)
tl.grid(row=1, column=1)
因为此功能仅适用于此按钮,我不想为每个按钮编写功能。
我希望我已经足够清楚了。提前谢谢。
答案 0 :(得分:1)
您可以使用lambda
关键字来执行此操作:
tl.config(image=photo2,width="100",height="100",command=lambda: function(1))
依此类推。
检查Tkinter Callbacks并搜索lambda
。
答案 1 :(得分:1)
lambda
是你的答案:)
如果要为所有按钮设置常规功能,则必须将按钮实例传递给lambda回调 这是一个简单的例子,用颜色代替图像(测试并且有效):
from Tkinter import Tk, Button
def function(btn, color):
btn.config(bg=color)
def main():
root = Tk()
root.geometry("250x150+300+300")
tl = Button(root)
tm = Button(root)
tl.config(bg="red", command=lambda: function(tl, 'green'))
tl.grid(row=1, column=1)
tm.config(bg="red", command=lambda: function(tm, 'yellow'))
tm.grid(row=1, column=2)
root.mainloop()
if __name__ == '__main__':
main()
单击第一个按钮时,其背景颜色将从红色变为绿色。第二个按钮将从红色变为黄色。
您可以将其应用于您的代码以更改图片。