Python 使用tkinter单击图像
我有一个包含幻灯片的数据库,名为“df_幻灯片”。现在我想显示单个幻灯片,当我单击“下一步”按钮时,应该显示数据库中的下一张幻灯片。幻灯片以base64格式存储 这就是我到目前为止所做的:Python 使用tkinter单击图像,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我有一个包含幻灯片的数据库,名为“df_幻灯片”。现在我想显示单个幻灯片,当我单击“下一步”按钮时,应该显示数据库中的下一张幻灯片。幻灯片以base64格式存储 这就是我到目前为止所做的: import tkinter from PIL import Image, ImageTk import base64 import pandas as pd i = 0 def load_next_img(): global pil_image, tk_image, i i = i+1
import tkinter
from PIL import Image, ImageTk
import base64
import pandas as pd
i = 0
def load_next_img():
global pil_image, tk_image, i
i = i+1
base64string = df_slides["Slide_Image"][i]
imgdata = base64.b64decode(base64string)
pil_image = Image.open(io.BytesIO(imgdata))
tk_image = ImageTk.PhotoImage(pil_image)
panel = tkinter.Label(root, image = tk_image)
panel.pack(side = "bottom", fill = "both", expand = "yes")
label['image'] = tk_image
root = tkinter.Tk()
label = tkinter.Label(root)
label.pack(padx=5, pady=5)
nextbutton = tkinter.Button(text="next", command=load_next_img)
nextbutton.pack()
root.mainloop()
我刚开始学习tkinter,我遇到了一些困难。从本质上讲,该程序是有效的,但当我打开它时,我遇到了一些困难:
import tkinter
from PIL import Image, ImageTk
import base64
import pandas as pd
i = 0
def load_next_img():
global pil_image, tk_image, i
i = i+1
base64string = df_slides["Slide_Image"][i]
imgdata = base64.b64decode(base64string)
pil_image = Image.open(io.BytesIO(imgdata))
tk_image = ImageTk.PhotoImage(pil_image)
label['image'] = tk_image
root = tkinter.Tk()
label = tkinter.Label(root,image = tk_image)
label.pack(side = "bottom", fill = "both", expand = "yes")
nextbutton = tkinter.Button(text="next", command=load_next_img)
nextbutton.pack()
root.mainloop()
我得到一个错误:
名称错误:未定义名称“tk_图像”
每次单击“下一步”,您都会创建一个名为“面板”的新
标签小部件。使用现有的标签
。@HenryYik感谢您的评论。我该怎么做?(如果这是微不足道的,很抱歉)在初始设置的标签中删除image=tk_image
。您只需要在调用load\u next\u img
时更改它。@HenryYik太棒了!谢谢!您还知道如何用第一张幻灯片初始化它吗?您的意思是要在程序开始时显示第一张图像吗?如果是这样,只需调用load\u next\u img()
。在主循环之前。