- 论坛徽章:
- 0
|
本帖最后由 zhichiamd 于 2010-05-13 11:23 编辑
我想通过菜单的打开图像选项打开图像,并显示在窗体的canvas上,打开图像正常,却不能显示出来。求大虾们帮忙看看。
# GUI of SmartEye
from Tkinter import *
from tkFileDialog import *
import tkMessageBox
import ImageTk
import Image
import sys
root = Tk()
root.geometry('800x610')
root.title(u'smart-eye')
class GUI():
def __init__(self, master = None):
# self.img_stream = None
self.master = master
proot = master
self.mBar = Frame(master, relief = RAISED, borderwidth = 2)
self.mBar.pack(fill = X)
# Create MenuBar
print 'create menu'
self._btn_1 = self.makeMenu_1()
self._btn_2 = self.makeMenu_2()
self._help = self.makeMenu_3()
# ShowImg
print 'create canvas'
self.canvas = None
Csize = (800,600)
self.ShowImg = Canvas(master, width = 640, height = 480, bg = 'yellow')
self.ShowImg.pack()
def openImg(self):
op_name = askopenfilename(filetypes=[("image files", "*.bmp, *.jpg, *.gif")])
if op_name:
self.img_name = op_name
img = Image.open(op_name)
if img:
print img.format, "%dx%d" % img.size, img.mode
pimg = ImageTk.PhotoImage(img)
self.ShowImg.create_oval(10, 10, 100, 100, fill = 'grey90')
self.ShowImg.create_image(0, 0, image = pimg)
else:
print "can't open this image..."
else:
print "Null image address..."
def about(self):
tkMessageBox.showinfo("smart-eye","version:0.1\n" "2010.05.12\n" "author:Joker.wang")
def saveImg(self):
print 'save image'
s_name = asksaveasfilename()
if sname:
print "save image as..."
self.ShowImg().create_image(0, 0, image = s_name, anchor = CENTER)
def close(self):
root.destroy()
def makeMenu_1(self):
tMenu = ((u'Image File', 0),
(u'Open Image', 0),
(u'Save Image', 0),
(u'Quit', 0)
)
btn = Menubutton(self.mBar, text = tMenu[0][0], underline = tMenu[0][1])
btn.pack(side = LEFT, padx = '2m')
btn.menu = Menu(btn)
btn.menu.add_command(label = tMenu[1][0], underline = tMenu[1][1],
command = self.openImg)
btn.menu.add_command(label = tMenu[2][0], underline = tMenu[2][1],
command = self.saveImg)
btn.menu.add_separator()
btn.menu.add_command(label = tMenu[3][0], underline = tMenu[3][1],
command = self.close)
btn['menu'] = btn.menu
return btn
def makeMenu_2(self):
tMenu = ((u'A', 0),
(u'A_A', 0),
(u'A_A_A', 0),
(u'A_A_A_A', 0)
)
# First level
btn = Menubutton(self.mBar, text = tMenu[0][0], underline = tMenu[0][1])
btn.pack(side = LEFT, padx = '2m')
# second level
btn.menu = Menu(btn)
# Thrid level
btn.menu.choices = Menu(btn.menu)
# fourth level
btn.menu.choices.wieerdones = Menu(btn.menu.choices)
btn.menu.choices.wieerdones.add_command(label = tMenu[3][0])
btn.menu.choices.add_command(label = tMenu[2][0])
btn.menu.choices.add_cascade(label = tMenu[2][0], menu = btn.menu.choices.wieerdones)
btn.menu.add_command(label = tMenu[1][0])
btn.menu.add_cascade(label = tMenu[1][0], menu = btn.menu.choices)
btn['menu'] = btn.menu
return btn
def makeMenu_3(self):
tMenu = ((u'Help', 0),
(u'About me', 0)
)
btn = Menubutton(self.mBar, text = tMenu[0][0], underline = tMenu[0][1])
btn.pack(side = LEFT, padx = '2m')
btn.menu = Menu(btn)
btn.menu.add_command(label = tMenu[1][0], underline = tMenu[1][1],
command = self.about)
btn['menu'] = btn.menu
return btn
#root = Tk()
#root.geometry('800x600')
#root.title(u'smart-eye')
app = GUI(root)
root.mainloop() |
|