![](/img/trans.png)
[英]How do I create a radio button type group of image buttons that were generated by a for loop in tkinter
[英]How do I store multiple values generated in a for loop to pass to a funtion within a tkinter button loop?
我有一个 tkinter 窗口,它构建必要数量的按钮,相应地命名它们,然后显示相应的图像。 我希望按钮在按下时打印与图像对应的正确文件名。 我试过lambda
,但这只会通过最后一个参数。 我怎样才能做到这一点?
images
是我正在使用的目录中的文件名列表。
def print_filename(i):
print(i)
window = Tk()
window.title('Test Window')
for i in images:
my_image = PhotoImage(master = window, file = i)
label = Label(window, image = my_image)
label.image=my_image
label.grid(row = 1, column = c)
b = Button(window, text=f'button {(c+1)}', command=lambda: print_filename(i))
b.grid(row=0, column=c)
c += 1
window.mainloop()
这是它运行时的样子:
该按钮应在按下时打印出图像的文件名。 例如: pdf_1.png
从Tkinter的文档:
Tkinter 的 Button 小部件不会将任何信息传递给回调。
对于像这样的简单情况,您可以使用 lambda 表达式作为 Tkinter 和回调函数之间的链接:
def callback(number):
print(number)
Button(text="one", command=lambda: callback(1)).pack()
Button(text="two", command=lambda: callback(2)).pack()
Button(text="three", command=lambda: callback(3)).pack()
使用上面提到的方式将图像的索引传递给print_filename
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.