用Python写的基于Tkinter 的FTP客户端

xiaoxiao2021-02-28  59

# -*- coding: utf-8 -*- from ftplib import FTP import os from Tkinter import * from tkFileDialog import * class FTP_Tkinter(): def login(self): self.ftp.connect(self.ipEntry.get()) self.ftp.login(self.userEntry.get(),self.passwdEntry.get()) def reflash(self): filelist=self.ftp.nlst() if self.listbox.size()>0: self.listbox.delete(0,END) for i in range(len(filelist)): self.listbox.insert(END, filelist[i].decode('gbk').encode('utf8')) def download(self,event): inputFileName = self.listbox.get(self.listbox.curselection()) file_handler = open(self.path.get() + '/'+inputFileName,'wb').write self.ftp.retrbinary('RETR %s'% os.path.basename(inputFileName.encode('gbk')),file_handler,1024) def selectPath(self): self.path_ = askdirectory() self.path.set(self.path_) def quit(self): self.root.quit() def __init__(self): self.ftp = FTP() self.inputFileName='' self.root = Tk() self.root.resizable(False, False) self.ipEntry=Entry(self.root) self.userEntry=Entry(self.root) self.passwdEntry=Entry(self.root,show='*') self.listbox=Listbox(self.root) self.path = StringVar() self.path_ = ' ' self.menubar = Menu(self.root) self.fmenu = Menu(self.menubar,tearoff=0) for each in ['打开','保存','另存为','关闭' ]: self.fmenu.add_command(label=each.decode('gbk')) self.fmenu.add_separator() self.fmenu.add_command(label='退出'.decode('gbk'),command=self.quit) self.menubar.add_cascade(label='文件'.decode('gbk'),menu=self.fmenu) self.emenu = Menu(self.menubar,tearoff=0) for each in ['复制','剪切','粘贴' ]: self.emenu.add_command(label=each.decode('gbk')) self.menubar.add_cascade(label='编辑'.decode('gbk'),menu=self.emenu) self.vmenu = Menu(self.menubar,tearoff=0) self.vmenu.add_command(label='状态'.decode('gbk')) self.menubar.add_cascade(label='视图'.decode('gbk'),menu=self.vmenu) self.amenu = Menu(self.menubar,tearoff=0) self.amenu.add_command(label='版本信息'.decode('gbk')) self.menubar.add_cascade(label='关于'.decode('gbk'),menu=self.amenu) self.root.title('FTP客户端'.decode('gbk')) self.root.geometry('300x400+500+100') Label(self.root,text='IP:',font=('Arial',15)).grid(row=0,column=0,sticky=E) self.ipEntry.grid(row=0,column=1,sticky=W) Label(self.root,text='用户:'.decode('gbk'),font=('Arial', 15)).grid(row=1,column=0,sticky=W) self.userEntry.grid(row=1,column=1,sticky=W) Label(self.root,text='密码:'.decode('gbk'),font=('Arial',15)).grid(row=2,column=0,sticky=W) self.passwdEntry.grid(row=2,column=1,sticky=W) Button(self.root,text='登陆'.decode('gbk'),font=('Arial',15),bg='Red',command=self.login).grid(row=1,column=2) Button(self.root,text='刷新'.decode('gbk'),font=('Arial',15),bg='Blue',command=self.reflash).grid(row=4,column=2,columnspan=2,sticky=W) Label(self.root,text='文件列表:'.decode('gbk').encode('utf8'),font=('Arial',15),bg='LimeGreen').grid(row=4,column=1,sticky=W) self.listbox.bind('<Double-Button-1>',self.download) self.listbox.grid(row=5,column= 1,sticky=W) Label(self.root,text = '目标路径:'.decode('gbk')).grid(row=7,column=0) Entry(self.root, textvariable = self.path).grid(row = 7, column = 1) Button(self.root, text = "路径选择".decode('gbk'),command = self.selectPath).grid(row = 7, column = 2) Label(self.root,text='双击可下载文件!'.decode('gbk'),font=('Arial',15),fg="RED").grid(row=8,column=1,sticky=W) self.root['menu'] = self.menubar self.root.mainloop() def main(): ftp=FTP_Tkinter() if __name__=='__main__': main()
转载请注明原文地址: https://www.6miu.com/read-41958.html

最新回复(0)