Pillow,Tkinter,Python,无形图像按钮

0 投票
1 回答
1218 浏览
提问于 2025-04-19 02:52

大家晚上好 :)

我最近在做一个小项目,写了一些代码(有Sapphire64的帮助 :))。我可以把一张图片做成按钮,这样就可以点击了,但我遇到了一个问题,就是图片周围有一个矩形的按钮框,看起来很明显。我想让这张图片像按钮一样可以点击,但又不想让它看起来像个按钮。

于是我尝试把它做成一个复选按钮,效果差不多,但同样可以看到复选按钮的痕迹,还是不只是图片。请问我能把复选按钮弄得不可见吗?

所以我的问题是,如何才能让一张图片可以点击,但又不让人觉得它是个按钮或复选按钮呢?

谢谢!

我把我的完整代码放在这里,你可以看到这张图片被显示成两个按钮,其中一个是注释掉的。

from tkinter import *
from PIL import Image, ImageTk

SWH = Tk() #Create Window

SWH.geometry("1024x950+130+0")
SWH.title("ServiceWhiz.")

img = None  #Var for future image named img. Currently giving it "None" as value.

def printimage():   #When print image is pressed do this:
    global img      #Make reference to predefined var.
    load = Image.open("ServiceWhiz.png")   #Load Image from file.
    render = ImageTk.PhotoImage(load)   #Load the image.

################################
    img = Checkbutton(SWH,state = ACTIVE,height = 45,width = 289,offvalue=0, image=render,command=imgpress)    #Display the image as a button and allow it to go to imgpress.
    #img = Button(SWH,image=render,command=imgpress)
################################
    img.image = render  
    img.place(x=0,y=0)
    return;

def imgpress():
    global img
    img.destroy()
    Label1 = Label(SWH, text="Image has been clicked",fg="#0094FF",font=('Arial',20)).pack()
    return;

SWTitle = Label(SWH, text="ServiceWhiz.",fg="#0094FF",font=('Arial',20)).pack()
MyButtonTest = Button(SWH, text="Click Me.",fg="White",bg="#0094FF",command=printimage).pack()

1 个回答

2

如果你想让图片可以被点击,只需要给它加上一个绑定,使用 <Button-1>。比如:

l = Label(..., image=render, ...)
...
def imgpress(event):
    ...
l.bind("<Button-1>", imgpress)
...

你也可以把图片放到一个画布上,然后在画布上进行绑定,这样也能达到同样的效果。

撰写回答