我来自java,只想创建一个带有图片的图形用户界面,但是图片正在动态变化,我不知道它将是哪张图片......但它不起作用,我只能创建一个图像并且无法在 root.mainloop() 之外更改它并收到大量错误消息... 有人知道如何动态更改图像吗? 非常感谢
import tkinter as tk
from PIL import Image, ImageTk
def add_image_to_gui(root, image_path):
# Load image
image = Image.open(image_path)
# Convert image to Tkinter-compatible format
tk_image = ImageTk.PhotoImage(image)
# Create label and display image
image_label = tk.Label(root, image=tk_image)
image_label.image = tk_image # Keep reference to the image to prevent it from being garbage collected
image_label.pack()
def create_gui(window_title, window_size, image_path):
# Create Tkinter window
root = tk.Tk()
root.title(window_title)
root.geometry(window_size)
# Add image
add_image_to_gui(root, image_path)
# Start Tkinter event loop
root.mainloop()
return root
if __name__ == "__main__":
window_title = "Simple GUI"
window_size = "1495x1020"
image_path = "Bilder/Hauptfenster.png"
root = create_gui(window_title, window_size, image_path)
chatgpt,谷歌搜索,但似乎没有人像我一样遇到同样的问题......
正确答案
为了在一段时间后切换图像,您需要调用某种类型的函数来更改它。由于此 gui 没有按钮,最简单的方法是使用 tkinter.tk().after
安排将来的更新,并让该函数更改标签图像。
下面是一些示例代码,展示了如何通过最少的修改来实现这一目标:
编辑:更新注释中的附加信息,另一个函数将提供文件路径,对 function_that_yields_new_image_paths
的调用将被替换。
import tkinter as tk
from PIL import Image, ImageTk
def add_image_to_gui(root):
image_label = tk.Label(root)
image_label.pack()
return image_label
def update_image(root, image_label):
image = Image.open(function_that_yields_new_image_paths())
tk_image = ImageTk.PhotoImage(image)
image_label.configure(image=tk_image)
image_label.image = tk_image
root.after(1000, update_image, root, image_label)
def function_that_yields_new_image_paths():
import numpy
image_path1 = "a.png"
image_path2 = "b.png"
return numpy.random.choice((image_path1, image_path2))
def create_gui(window_title, window_size):
# Create Tkinter window
root = tk.Tk()
root.title(window_title)
root.geometry(window_size)
# Add image
image_label = add_image_to_gui(root)
root.after(1, update_image, root, image_label)
# Start Tkinter event loop
root.mainloop()
return root
if __name__ == "__main__":
window_title = "Simple GUI"
window_size = "1495x1020"
root = create_gui(window_title, window_size)
如果您有任何疑问,请告诉我。
以上就是Python tkinter GUI动态改变图像的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756