-
不使用通配符导入(
from module import *
). 它会导致错误,并与PEP8背道而驰
-
不要使用
quit()
或
exit()
-
不要使用“file”作为变量名,因为它是python2中的内置名称。
-
self.master = master
-
你需要创建小部件
一旦
-
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
import os
class Window(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
menu = tk.Menu(self.master)
master.config(menu=menu)
file_menu = tk.Menu(menu)
file_menu.add_command(label="Exit", command=self.quit)
file_menu.add_command(label="Open", command=self.openFile)
menu.add_cascade(label="File", menu=file_menu)
analyze = tk.Menu(menu)
menu.add_cascade(label="Analyze", menu=analyze)
self.canvas = tk.Canvas(self)
self.canvas.pack(fill=tk.BOTH, expand=True)
self.image = None # none yet
#Where I open my file
def openFile(self):
filename = filedialog.askopenfilename(initialdir=os.getcwd(), title="Select BMP File", filetypes=[("BMP Files","*.bmp")])
if not filename:
return # user cancelled; stop this method
load = Image.open(filename)
w, h = load.size
self.render = ImageTk.PhotoImage(load) #must keep a reference to this
if self.image is not None: # if an image was already loaded
self.canvas.delete(self.image) # remove the previous image
self.image = self.canvas.create_image((w / 2, h / 2), image=self.render)
root.geometry("%dx%d" % (w, h))
root = tk.Tk()
root.geometry("%dx%d" % (300, 300))
root.title("BMP Image GUI")
app = Window(root)
app.pack(fill=tk.BOTH, expand=1)
root.mainloop()