[英]How to make button command to open image inside window in tkinter?
我正在尝试在 tkinter 中创建一个非常简单的图像查看器,其中包含两个简单的按钮查看和关闭。 我的关闭按钮按预期工作,但我无法让我的查看按钮在我的文件目录中打开指定的图像。 我曾尝试导入ImageTK
来编写一个按钮命令来打开它,但到目前为止还没有成功。
import tkinter as tk
from PIL import ImageTk,Image
class image_viewer:
def __init__(self, win):
self.root = win
self.root.title('ImageViewer')
self.root.geometry('400x350')
self.btnView = tk.Button(text='View', command= ImageTk.PhotoImage(Image.open(r"C:\Users\SteveSmith\eclipse-workspace\SteveSmith-ex1\src\raw\pythonIsFun.jpg")))
self.btnView.pack(side=tk.LEFT)
self.btnView.place(x=20, y=265)
self.btnClose = tk.Button(text='close', command=self.root.destroy)
self.btnClose.pack(side=tk.LEFT)
self.btnClose.place(x=65, y=265)
def main():
root = tk.Tk()
image_viewer(root)
root.mainloop()
if __name__ == '__main__':
main()
您的代码中有许多错误,之前我在选择其中一个并将其标记为在涵盖该问题之前已被询问和回答的另一个问题的副本后将其关闭。
但是,根据您发表的评论并经过深思熟虑,我决定重新打开它并尝试解决我看到的所有或至少大部分问题 - 否则您可能需要很长时间才能解决所有问题。
结果如下:
from PIL import ImageTk, Image
import tkinter as tk
class ImageViewer:
def __init__(self, root, image_filename):
self.root = root
self.image_filename = image_filename
self.root.title('ImageViewer')
self.root.geometry('400x350')
self.canvas = tk.Canvas(self.root, width=300, height=300)
self.canvas.place(x=10, y=10)
self.btnView = tk.Button(text='View', command=self.view_image)
self.btnView.place(x=20, y=265)
self.btnClose = tk.Button(text='close', command=self.root.destroy)
self.btnClose.place(x=65, y=265)
def view_image(self):
self.img = ImageTk.PhotoImage(Image.open(self.image_filename)) # Keep ref to image.
self.canvas.create_image(20, 20, anchor=tk.NW, image=self.img)
def main(image_filename):
root = tk.Tk()
ImageViewer(root, image_filename)
root.mainloop()
if __name__ == '__main__':
main(r"C:\Users\SteveSmith\eclipse-workspace\SteveSmith-ex1\src\raw\pythonIsFun.jpg")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.