Python 在单击按钮时删除焦点条目小部件

Python 在单击按钮时删除焦点条目小部件,python,tkinter,Python,Tkinter,我在程序中添加了一个功能,在添加图像时,图像的路径将显示在条目小部件中。现在我想添加删除这些路径条目的可能性。当点击一个条目时,它应该是焦点。然后单击按钮将删除当前处于焦点的条目。下面的代码似乎在“条目小部件焦点”部分失败,因为焦点始终停留在“txtImage1”条目上。非常感谢您的帮助 #Variables Image1 = StringVar() Image2 = StringVar() Image3 = StringVar() Image4 = StringVar() #Image P

我在程序中添加了一个功能,在添加图像时,图像的路径将显示在条目小部件中。现在我想添加删除这些路径条目的可能性。当点击一个条目时,它应该是焦点。然后单击按钮将删除当前处于焦点的条目。下面的代码似乎在“条目小部件焦点”部分失败,因为焦点始终停留在“txtImage1”条目上。非常感谢您的帮助

#Variables

Image1 = StringVar()
Image2 = StringVar()
Image3 = StringVar()
Image4 = StringVar()

#Image Path Entry Widgets

lblImage1 = Label(PictureFrame2, font=('Arial',12), text="Image 1", bg="#d9e1f1")
lblImage1.grid(row=2,column=0)
txtImage1 = Entry(PictureFrame2, font=('Arial',12), textvariable=Image1, bg="ghost white", width = 10)
txtImage1.grid(row=3,column=0)

lblImage2 = Label(PictureFrame2, font=('Arial',12), text="Image 2", bg="#d9e1f1")
lblImage2.grid(row=2,column=1)
txtImage2 = Entry(PictureFrame2, font=('Arial',12), textvariable=Image2, bg="ghost white", width = 10)
txtImage2.grid(row=3,column=1)

lblImage3 = Label(PictureFrame2, font=('Arial',12), text="Image 3", bg="#d9e1f1")
lblImage3.grid(row=2,column=2)
txtImage3 = Entry(PictureFrame2, font=('Arial',12), textvariable=Image3, bg="ghost white", width = 10)
txtImage3.grid(row=3,column=2)

lblImage4 = Label(PictureFrame2, font=('Arial',12), text="Image 4", bg="#d9e1f1")
lblImage4.grid(row=2,column=3)
txtImage4 = Entry(PictureFrame2, font=('Arial',12), textvariable=Image4, bg="ghost white", width = 10)
txtImage4.grid(row=3,column=3)

#Entry Widget Focus

def image1click(event):
    txtImage1.focus_set()
txtImage1.bind("<Button-1>", image1click)

def image2click(event):
    txtImage2.focus_set()
txtImage2.bind("<Button-1>", image2click)

def image3click(event):
    txtImage3.focus_set()
txtImage3.bind("<Button-1>", image3click)

def image4click(event):
    txtImage4.focus_set()
txtImage4.bind("<Button-1>", image4click)


#Delete Image on Focus

def Deleteimage():
    messageDelete= tkinter.messagebox.askyesno ("","Do you want to delete this image?")
    if messageDelete > 0:
        try:
            if txtImage1.focus_get():
                Image1.set("")
            else:
                if txtImage2.focus_get():
                    Image2.set("")
                else:
                    if txtImage3.focus_get():
                        Image3.set("")
                    else:
                        if txtImage4.focus_get():
                            Image4.set("") 
        except Exception:
            pass

#Delete Button

btnDeleteImage = Button(PictureFrame, text='Delete', font=('arial',12), height=1, width=12, bd=2, padx=13, command=Deleteimage)
btnDeleteImage.grid(row=1,column=1)
#变量
Image1=StringVar()
Image2=StringVar()
Image3=StringVar()
Image4=StringVar()
#图像路径输入小部件
lblImage1=标签(PictureFrame2,font=('Arial',12),text=“Image 1”,bg=“#d9e1f1”)
lblImage1.grid(行=2,列=0)
txtImage1=条目(PictureFrame2,font=('Arial',12),textvariable=Image1,bg=“鬼白色”,宽度=10)
txtImage1.grid(行=3,列=0)
lblImage2=标签(PictureFrame2,font=('Arial',12),text=“Image 2”,bg=“#d9e1f1”)
lblImage2.grid(行=2,列=1)
txtImage2=条目(PictureFrame2,font=('Arial',12),textvariable=Image2,bg=“鬼白色”,宽度=10)
txtImage2.grid(行=3,列=1)
lblImage3=标签(PictureFrame2,font=('Arial',12),text=“Image 3”,bg=“#d9e1f1”)
lblImage3.grid(行=2,列=2)
txtImage3=条目(PictureFrame2,font=('Arial',12),textvariable=Image3,bg=“鬼白色”,宽度=10)
txtImage3.grid(行=3,列=2)
lblImage4=标签(PictureFrame2,font=('Arial',12),text=“Image 4”,bg=“#d9e1f1”)
lblImage4.grid(行=2,列=3)
txtImage4=条目(PictureFrame2,font=('Arial',12),textvariable=Image4,bg=“鬼白色”,宽度=10)
txtImage4.grid(行=3,列=3)
#条目控件焦点
def IMAGE1单击(事件):
txtImage1.focus_set()
txtImage1.bind(“,image1click)
def image2click(事件):
txtImage2.focus_set()
txtImage2.bind(“,image2click)
def image3click(事件):
txtImage3.focus_set()
txtImage3.bind(“,image3click)
def IMAGE4单击(事件):
txtImage4.focus_set()
txtImage4.bind(“,image4click)
#删除焦点上的图像
def Deleteimage():
messageDelete=tkinter.messagebox.askyesno(“,”是否要删除此图像?”)
如果messageDelete>0:
尝试:
如果txtImage1.focus_get():
图1.set(“”)
其他:
如果txtImage2.focus_get():
图2.set(“”)
其他:
如果txtImage3.focus_get():
图3.set(“”)
其他:
如果txtImage4.focus_get():
图4.集合(“”)
除例外情况外:
通过
#删除按钮
btnDeleteImage=按钮(PictureFrame,text='Delete',font=('arial',12),高度=1,宽度=12,bd=2,padx=13,命令=Deleteimage)
btnDeleteImage.grid(行=1,列=1)
focus\u get()
不返回布尔值,它返回具有焦点的实际小部件
txtmage1.focus\u get()
txtmage2.focus\u get()
等都将返回相同的内容:具有焦点的小部件

您可以用这个替换整个if/else链(并且您可以使用任何小部件代替
txtmage1
):


此外,无需在单击按钮时调用函数来设置焦点,这会自动发生。

这解决了问题,并保存了不少代码,非常感谢!
widget = txtImage1.focus_get()
widget.delete(0, "end")