Python 3.x Tkinter文本小部件插入图像

Python 3.x Tkinter文本小部件插入图像,python-3.x,tkinter,Python 3.x,Tkinter,我制作了一个文本小部件来写问题。我想在按下“添加图像”按钮时插入图像。我该怎么做?当我选择另一个图像时,第一个图像将被删除。现在,我可以使用以下代码添加一个图像: import tkinter as tk root = tk.Tk() root.geometry('800x520+0+0') global img img = tk.PhotoImage(file="quiz.gif") def add_img(): T.image_create(tk.INSERT, image=img)

我制作了一个文本小部件来写问题。我想在按下“添加图像”按钮时插入图像。我该怎么做?当我选择另一个图像时,第一个图像将被删除。现在,我可以使用以下代码添加一个图像:

import tkinter as tk
root = tk.Tk()
root.geometry('800x520+0+0')
global img
img = tk.PhotoImage(file="quiz.gif")
def add_img():
    T.image_create(tk.INSERT, image=img)
tk.Button(root, text="Add Image", font=('Verdana',8), 
command=add_img).place(x=690, y=0)
T = tk.Text(root, width=65, height=17, padx=10, pady=10, font=('Verdana', 
14), wrap='word')
T.place(x=0, y=0)
root.mainloop()
我想在使用tk listbox选择时添加不同的图像


谢谢你的帮助。

我用字典解决了这个问题

import tkinter as tk, glob
root = tk.Tk()
root.geometry('800x520+0+0')
Images = {}
for infile in glob.glob('*.gif'):
    img = infile[:-4]
    if img not in Images:
        Images[img] = tk.PhotoImage(file=infile)
def add_img():
    global listbox
    listbox = tk.Listbox(root, font=('Verdana',9), width=12)
    listbox.place(x=60,y=2)
    for infile in glob.glob('*.gif'):
        listbox.insert(tk.END, infile[:-4])
    listbox.bind('<<ListboxSelect>>',CurSelet)
def CurSelet(event):
    fn = listbox.get(tk.ANCHOR)
    listbox.destroy()
    T.image_create(tk.INSERT, image=Images[fn])
tk.Button(root, text="Add Image", font=('Verdana',8), 
command=add_img).place(x=690,y=0)
T = tk.Text(root, width=65, height=17, padx=10, pady=10, font=('Verdana', 
14), wrap='word')
T.place(x=0, y=50)
root.mainloop()
将tkinter作为tk、glob导入
root=tk.tk()
根几何体('800x520+0+0')
图像={}
对于glob.glob('*.gif')中的填充:
img=infle[:-4]
如果图像中没有img:
Images[img]=tk.PhotoImage(文件=infle)
def add_img():
全局列表框
listbox=tk.listbox(根,字体=('Verdana',9),宽度=12)
listbox.place(x=60,y=2)
对于glob.glob('*.gif')中的填充:
listbox.insert(tk.END,infle[:-4])
listbox.bind(“”,CurSelet)
def游标(事件):
fn=listbox.get(tk.ANCHOR)
destroy()
T.image\u创建(tk.INSERT,image=Images[fn])
按钮(root,text=“添加图像”,font=('Verdana',8),
命令=add_img).place(x=690,y=0)
T=tk.Text(根,宽=65,高=17,padx=10,pady=10,字体=('Verdana',),
14) ,wrap='word')
T.位置(x=0,y=50)
root.mainloop()

创建第二个图像与创建第一个图像没有什么不同。不清楚你在问什么。另外,您提到了一个列表框,但您的代码没有列表框。我的问题是:是否有必要为所有可用图像声明变量。因为当我对第二个图像使用相同的变量时,第一个图像会被删除。是否可以使用glob.glob('*.gif')创建一个包含所有图像文件的列表框并创建该图像。是的,我可以创建另一个变量img。。。并宣布它。有没有一种方法可以让我更改文件。img=tk.PhotoImage(文件=变量)。我没有在上面的例子中使用列表框,但是有可能吗?