这两天一直在学习Tkinter,感觉其中的元件布局,有点复杂,不容易控制,因此,写了此例算作是练习一下了(其中用到了,Entry, Button, listbox, canvas,scrollbar等等),有高手发现不准确之处,希望指点一二:)
python 代码
-
-
- import os,sys,math
- from glob import glob
-
- from Tkinter import *
- import Image
- from ImageTk import PhotoImage
- from tkFileDialog import askopenfilename,askdirectory
- from tkMessageBox import showerror
-
- class ViewPhotos(Frame):
- """all photos manage"""
- photodirs = ""
- savephotos = ""
-
- def __init__(self,parent=None,photo_dir=None):
- Frame.__init__(self,parent)
- self.pack(expand=YES,fill=BOTH)
- self.makeWidgets()
-
- def makeWidgets(self):
- """
- init button
- """
- frm = Frame(self,relief=SUNKEN)
- frm.pack(side=TOP,fill=X,padx=5)
- Label(frm,text=':)Browse Directory:').pack(side=LEFT)
- ent = Entry(frm,text='Type Your Directory or Press Browse Button',fg='blue')
- ent.pack(side=LEFT,expand=YES,fill=X)
- Button(frm,text='Browse...',command=self.onOpenDir).pack(side=LEFT)
- Button(frm,text='Quit',command=self.quit).pack(side=RIGHT)
-
- self.ent = ent
-
- def makeCanvas(self):
- """
- create content display area.
- """
- cont = Frame(self)
- cont.pack(side=TOP,expand=YES,fill=BOTH,pady=3)
- cont.config(relief=SUNKEN)
- lis = Listbox(cont)
- lis.pack(side=LEFT,fill=Y)
- can = Canvas(cont)
- can.config(width=300,height=200)
- sbar = Scrollbar(cont)
- sbar.config(command=can.yview)
- can.config(yscrollcommand=sbar.set)
- sbar.pack(side=RIGHT,fill=Y)
- can.pack(side=LEFT,expand=YES,fill=BOTH)
-
-
- imglist = [img for img in os.listdir(self.photodirs)]
- for img in imglist:
- lis.insert(END,img)
-
- lis.bind('<Double-Button-1>',self.viewOne)
-
- self.lis = lis
- self.can = can
-
- def viewOne(self,event):
- """one photo view"""
- try:
- index = self.lis.curselection()
- img = self.lis.get(index)
- imgpath = self.photodirs + '/' + img
- imgobj = PhotoImage(file=imgpath)
-
- self.can.create_image(10,20,image=imgobj,anchor=NW)
- self.savephotos = imgobj
- except IOError:
- showerror('Photos',"This file isn't image.")
- pass
- return self.savephotos
-
- def onOpenDir(self):
- photodirs = askdirectory()
- if photodirs:
- if os.path.exists(photodirs):
- self.photodirs = photodirs
-
- self.makeCanvas()
- self.ent.delete(0,END)
- self.ent.insert(0,photodirs)
- else:
- showerror('Photos','you have not browse directory!')
-
-
- if __name__ == '__main__':
- root = Tk()
- root.geometry('800x600+50+50')
- view = ViewPhotos(root)
- root.mainloop()
补充一点:from ImageTk import PhotoImage 这里的ImageTk 需要下载包(PIL)重新安装(http://www.pythonware.com).
因为,Tkinter 中的PhotoImage()支持的图片格式比较少(gif,ppm,pgm),所以,如果需要处理其它格式的图片,就需要ImageTk哩. 它的PhotoImage()支持gif,jpeg,tiff,bmp等,处理常用的图片,够用了。。。 ^ _^
分享到:
相关推荐
Python与Tkinter编程
Manning.Python与Tkinter编程,由于文件较大,所以分成2个压缩包,这是第一个
Python与Tkinter编程 PYTHON自带的GUI库 part1
python与Tkinter编程代码,演示了Tkinter 及Pmw的主要控件的使用实例
用python的tkinter库实现简易计算器
Python与Tkinter编程的英文版书籍,2000年出版,字迹清晰又大,tkinter模块用于图形界面编程(GUI)
Manning.Python与Tkinter编程,由于文件较大,所以分成2个压缩包,这是第二个
美河提供.Manning.Python与Tkinter编程,一本非常不错的PYTHON 资源
Python tkinter库开发文档
学习Tkinter,发现《python与Tkinter编程》的manning主页上不去了,也在论坛求助过没有结果,后来经过多方搜索找到下载的地址,花了几个星期的时间才下载下来。希望与大家共享。 因为积分太少了,资源要一个积分...
本文档详细的介绍了Python的Tkinter图形框架的教程,如果设计图形界面不想安装过多的库和插件,Tkinter再合适不过了,轻量简单,满足GUI设计的基本需求。
python tkinter 实现简易计算器(学校程序设计实践作业)
python+tkinter实现停车场管理系统,GUI界面操作。可当作毕业设计参考,日常python项目练手。
Python and Tkinter Programming 英文版
马上元旦和新年就要到了,我使用python+Tkinter写了一个小界面,显示从现在开始到元旦和春节的倒计时时间,日期、小时、分钟到秒,每一秒刷新一次。 适合人群:初学者,对python感兴趣的同学。 能学到什么:可以了解...