最近工作的时候,由于老是使用COMMAND,感觉不是太爽,因此想能不能写一个GUI?
想到就动手,随便找了已给GUI的书,敲了一段不到100行的代码后发现,不论怎么运行,都出不来结果,网上一搜,发现还真有人实现--
代码粘贴,复制,发现仍旧是没有效果?因此重新调试代码,step by step,1个多小调试,发现自己犯了一个比较低级的错误,可笑的是
明明代码错误,但是仍给出了正确的截图?我手上的电子书也是出版物,可见一斑(书名就不说了,没有必要人身攻击--哈哈)?但是,对于想学习的人而言,一定不要眼高手低,很多东西,貌似很简单,真正的动手时,你可能就会错误百出,还是那句话,
实践出真知,同时自己也要多思考~~~~~~~~
偶自己的代码如下:
-
import os
-
from time import sleep
-
from Tkinter import *
-
-
class DirList(object):
-
def __init__(self, initdir = None):
-
self.top = Tk()
-
self.label = Label(self.top,text="Driectory List V1.1")
-
self.label.pack()
-
self.cwd = StringVar(self.top)
-
self.dirlabel = Label(self.top,fg='blue',font=('Helvetica',12,'bold'))
-
self.dirlabel.pack()
-
#comment add by kinfinger
-
self.dirfm =Frame(self.top)
-
self.dirfm.pack() # 被丢失的代码
-
self.dirsb=Scrollbar(self.dirfm)
-
self.dirsb.pack(side=RIGHT,fill=Y)
-
self.dirs =Listbox(self.dirfm,height =15,width= 50,yscrollcommand=self.dirsb.set)
-
self.dirs.bind('',self.setDirAndGo)
-
self.dirsb.config(command = self.dirs.yview)
-
self.dirs.pack(side = LEFT,fill = BOTH)
-
-
self.dirn = Entry(self.top,width = 50,textvariable =self.cwd)
-
self.dirn.bind('',self.doLS)
-
self.dirn.pack()
-
-
self.bfm= Frame(self.top)
-
self.clr =Button(self.bfm,text ='Clear',command = self.clrDir,activeforeground ='white',activebackground ='blue',)
-
self.ls =Button(self.bfm,text ='List Directory',command =self.doLS, activeforeground ='white',activebackground ='green')
-
self.quit =Button(self.bfm,command=self.top.quit,text= 'quit',activeforeground ='white',activebackground ='red')
-
self.clr.pack(side = LEFT)
-
self.ls.pack(side = LEFT)
-
self.quit.pack(side = LEFT)
-
self.bfm.pack()
-
-
if initdir: #comment none
-
self.cwd.set(os.curdir)
-
self.doLS
-
def clrDir(self,ev=None):
-
self.cwd.set('')
-
def setDirAndGo(self,ev=None):
-
self.last = self.cwd.get()
-
self.dirs.config(selectbackground ='red')
-
check =self.dirs.get(self.dirs.curselection())
-
if not check:
-
check = os.curdir
-
self.cwd.set(check)
-
self.doLS()
-
def doLS(self,ev=None):
-
error = ''
-
tdir = self.cwd.get()
-
if not tdir: tdir = os.curdir
-
-
if not os.path.exists(tdir):
-
error = tdir + ': no such file'
-
elif not os.path.isdir(tdir):
-
error =tdir +':not a directory'
-
-
if error:
-
self.cwd.set(error)
-
self.top.update()
-
sleep(2)
-
if not (hasattr(self,'last')) \
-
and self.last:
-
self.last = os.curdir
-
self.cwd.set(self.last)
-
self.dirs.config(\
-
selectbackground ='LightSkyBlue')
-
self.top.update()
-
return
-
-
self.cwd.set(\
-
'fetch directory contents....'
-
)
-
self.top.update()
-
dirlist = os.listdir(tdir)
-
print dirlist
-
dirlist.sort()
-
if os.chdir(tdir):
-
print 'success'
-
else:
-
print tdir
-
print os.getcwd()+'+++++++++++'
-
self.dirlabel.config(text=os.getcwd())
-
self.dirs.delete(0,END)
-
self.dirs.insert(END,os.curdir)
-
print os.curdir+'not change'
-
for eachFile in dirlist:
-
self.dirs.insert(END,eachFile)
-
#print eachFile
-
self.cwd.set(os.curdir)
-
self.dirs.config(\
-
selectbackground ='LightSkyBlue')
-
def main():
-
d=DirList(os.curdir)
-
mainloop()
-
if __name__ == '__main__':
-
main()
同时为了显示中文:
做如下修改:
unicode(eachFile,'cp936')
效果如下:
关于编码:
ref:
http://blog.csdn.net/zbyufei/article/details/5905816
阅读(409) | 评论(0) | 转发(0) |