簡體   English   中英

如何使Tkinter中的圖像可點擊?

[英]How to make an image clickable in Tkinter?

目前,代碼從文件夾中選擇圖像並將其顯示在 tkinter window 上。我可以單擊“下一張圖像”以查看文件夾中的下一張圖像。 我想讓圖像可以點擊,這樣它就會把我帶到指定的鏈接。 我可以讓它可點擊但不確定如何將不同的鏈接綁定到每個圖像。 如果我要隨機化圖像(計划稍后這樣做),它會變得混亂

import tkinter as tk
from tkinter.filedialog import askdirectory
import os

img_list = []

def save_to_list(event):
    click_loc = [event.x, event.y]
    print ("you clicked on", click_loc)
    img_list.append(click_loc)

def next_img():
    img_label.img = tk.PhotoImage(file=next(imgs))
    img_label.config(image=img_label.img)

root = tk.Tk()
root.geometry('500x500')
# Choose multiple images
img_dir = askdirectory(parent=root, initialdir="./yoga_Images/", title='Choose folder')
os.chdir(img_dir)
imgs = iter(os.listdir(img_dir))

img_label = tk.Label(root)
img_label.pack()
img_label.bind("<Button-1>",save_to_list)

btn = tk.Button(root, text='Next image', command=next_img)
btn.pack()

next_img()

root.mainloop()

您可以在創建按鈕時簡單地指定圖像 object。

from PIL import Image, ImageTk
import tkinter as tk

def example():
    print("Clickable Image!")

root = tk.Tk()

image = Image.open("image.png")
btnPhoto= ImageTk.PhotoImage(image)

imgBtn = tk.Button(root, image=btnPhoto, command=example)
imgBtn.pack()

root.mainloop()

這里有一些代碼,如果你想制作多個可點擊的圖像,不要忘記指定你的圖像目錄(抱歉使用列表理解,我知道它們有點混亂)。

from PIL import Image, ImageTk
import tkinter as tk
import os


def example():
    print("Clickable Image!")


root = tk.Tk()

imgDir = "imgs"
images = [ImageTk.PhotoImage(Image.open(os.path.join(imgDir, imgName))) for imgName in os.listdir(imgDir)]

for img in images:
    imgBtn = tk.Button(root, image=img, command=example)
    imgBtn.pack()


root.mainloop()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM