如何解决如何使按钮不在列表中
我正在尝试编写代码,以使按钮脱离图像。每当您单击该按钮时,它将显示该图像。
import os
from PIL import ImageTk,Image
import tkinter
root = tkinter.Tk()
folder_list = os.listdir(r"C:\Users\Teknoloji\Desktop\Phyton\Jack\Selam")
def Imagen():
image = tkinter.Canvas(root,width=300,height=300)
for b in folder_list:
if b == my_text:
img = ImageTk.PhotoImage(Image.open(f"Images\{b}"))
label = tkinter.Label(image=img)
print(my_text)
label.image = img
image.create_image(120,120,image=img)
image.pack()
for i in folder_list:
button = tkinter.Button(root,text=i,command=Imagen)
my_text = button.cget("text")
print(my_text)
button.pack()
root.mainloop()
解决方法
我已经接受了您的代码,并在此处进行了一些更改:
lapply(
X = 1:5,FUN = function(i) {
lst <- lapply(
X = 1:10,FUN = function(j) {
cbind(round(rnorm(1),4),paste(i,j,sep = "."),LETTERS[i+j])
}
)
Reduce(rbind,lst)
}
)
我做了什么?
-
我已经从代码中删除了一些不需要的部分,例如在函数内部进行了不必要的循环,而且似乎您没有使用标签来显示图像,而是使用了
import os from PIL import ImageTk,Image import tkinter root = tkinter.Tk() folder_list = os.listdir(r"C:\Users\Teknoloji\Desktop\Phyton\Jack\Selam") def Imagen(img_path): img = ImageTk.PhotoImage(Image.open(f'images/{img_path}')) #label = tkinter.Label(image=img) image.whatever = img #keeping a reference,can be anything image.itemconfigure('image',image=img) image.pack() for i in folder_list: button = tkinter.Button(root,text=i,command=lambda i=i:Imagen(i),width=10) button.pack(pady=5) image = tkinter.Canvas(root,width=300,height=300) image.create_image(120,120,tag='image') root.mainloop()
,无论哪种方式都可以确保按下按钮时,它不会覆盖现有图像。 -
我还已将图像路径作为参数传递给打开图像的函数,以便
canvas
可以具有传递给函数的参数。
循环按钮如何工作? (摘自here)
这看起来很神奇,但这是发生了什么。当您使用该lambda定义函数时,open_this调用在定义函数时不会获取变量i的值。取而代之的是,它做一个闭包,有点像是对自己的注释,上面写着“我应该在被调用时查找变量i的值”。当然,该函数是在循环结束后调用的,所以那时我将始终等于循环中的最后一个值。 使用i = i技巧会使您的函数在定义lambda时存储i的当前值,而不是等待稍后查找i的值。 让我知道这是否有效。
如果对此有任何疑问或错误,请告诉我。
欢呼
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。