备份界面

一、实验说明

1. 环境登录

无需密码自动登录,系统用户名shiyanlou

2. 环境介绍

本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到桌面上的程序:

  1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令

  2. Firefox:浏览器,可以用在需要前端界面的课程里,只需要打开环境里写的HTML/JS页面即可

  3. GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器

3. 环境使用

使用GVim编辑器输入实验所需的代码及文件,使用LX终端(LXTerminal)运行所需命令进行操作。

实验报告可以在个人主页中查看,其中含有每次实验的截图及笔记,以及每次实验的有效学习时间(指的是在实验桌面内操作的时间,如果没有操作,系统会记录为发呆时间)。这些都是您学习的真实性证明。

4.环境搭建

实验楼虚拟机,自带了python2.0和python3.0版本,无需安装 该实验建议使用 python2.0 版本, 也就是默认版本

IDE选择及安装:

vim:自带编辑器,无需安装,只要你会,随你喜欢

IDLE:python的编译器,推荐新手使用
代码:sudo apt-get install idle

spyder:需要学习学习
代码:sudo apt-get install spyder

二、Tkinter界面编程

1.介绍

Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个。最大的特点是跨平台,缺点是性能不太好,执行速度慢。

另外想到界面,大家自然会想到做游戏,基于python的游戏模块,可以选择pygame,有兴趣的也可以去学习。

在这里呢,比较适合我们这个小项目的图形界面开发要求,所以我们在此选择Tkinter模块来开发我们这个软件的界面

2.需求分析

做个简单界面,先上图 图片描述信息 界面大概就这样,实现这个基本功能,然会就添加自定义的各种东西,做出来会感觉非常好的,接下来就开始动手了......

1、如果你是接着第二节实验做过来的,那你不用重新敲代码了

2、如果你接触了Tkinter模板,那就更棒了

3、需求就是做界面⊙﹏⊙汗

3.代码实现

#!/usr/bin/python
# -*- coding: utf-8 -*-
#Filename : backUp.py

#导入模板
import Tkinter
import os
import time

#定义函数,这里才是精髓所在
def backup():
    global entry_source
    global entry_target
    source = entry_source.get()
    target_dir = entry_target.get()

    today_dir = target_dir + time.strftime('%Y%m%d')
    time_dir = time.strftime("%H%M%S")

    touch = today_dir + os.sep + time_dir + '.zip'
    command_touch = "zip -qr " + touch +' '+ source

    print command_touch
    print source
    print target_dir
    if os.path.exists(today_dir)==0:
        os.mkdir(today_dir)
    if os.system(command_touch)==0:
        print 'Success backup Up'
    else:
        print 'Failed backup'

#从这里开始呢,则是开始界面的编写及布局
root = Tkinter.Tk()
root.title('BackUp')
root.geometry("200x200")
#第一行的两个控件
lbl_source = Tkinter.Label(root, text='Source')
lbl_source.grid(row=0, column=0)
entry_source = Tkinter.Entry(root)
entry_source.grid(row=0,column=1)
#第二行的两个控件
lbl_target = Tkinter.Label(root, text='Target')
lbl_target.grid(row=1, column=0)
entry_target = Tkinter.Entry(root)
entry_target.grid(row=1,column=1)
#第三行的一个按钮控件
but_back = Tkinter.Button(root,text='BackUp')
but_back.grid(row=3, column=0)
but_back["command"] = backup
#界面的开始
root.mainloop()

4.代码解析

1、学了第二节的代码,你可以发现,这里将第二节的代码,定义一个函数包裹住,便于调用

2、界面阶段

  • 先调用Tkinter的Tk()框架,新建root,放我们需要的控件,代码 root=Tkinter.Tk()

  • 定义root的标题,代码 root.title("Backup")

  • 设定root的大小,代码 root.geometry("200x200")

  • 定义第一、二行的两个控件

    ``` Label,文本控件,显示“源地址”和“目的地址” Entry,输入框控件,输入“源地址”和“目的地址”

    ```

  • 顶底按钮,输入框内输入了地址信息,则点击按钮,执行函数内的语句

  • lbl_source = Tkinter.Label(root, text='源地址') 这条语句,表示定义Label,root指Label所在的一个母体框,text就是指显示的文本

  • lbl_source.grid(row=0, column=0) 这行代码,grid()函数的功能是显示控件,row指行,column指列

  • but_back["command"] = backup 这行代码非常重要!看到上面,定义函数的那块,函数名为backup,而这里,command指的是命令,这行代码的意思就是:将命令绑定这个函数(上面定义的),当点击这个按钮时,就调用指定的backup()函数

3、函数内部

  • 函数内部的“global”:source 和 target_dir 都没有默认值,而他们的值,由entry_source和entry_target来赋值。不在本函数内的变量或对象,可以用标识符 global 来定义,然后在函数内部使用就可以了

  • 关于get()函数:因为entry_source和entry_target都属于Tkinter模板中的Entry控件,该控件可以由get()函数读到该控件的文本框信息,所以只要调用get()就可以给source和target_dir赋值了

  • 后面的代码,基本没变,可以参照第三节的代码解析去了解

5.运行结果

1.代码正常工作: 图片描述信息

2.程序工作正常 (备份shiyanlou下的Documents文件,打包备份压缩并放到Desktop桌面上) 图片描述信息

3.另外,你还可以自行添加代码、测试,查看你在程序界面输入的路径,在程序内部变成了哪些变量,以及变量间的传递,程序运行顺序,都可以通过IDLE界面查看 上张图(未输入任何路径,IDLE报错): 图片描述信息

4.好了,python练手小项目到此就告一段落了,基本功能实现,这里面还有好多功能可以继续添加,有兴趣的自己去挖掘吧

版权声明:允许转载,转载请注明出处 —— 《基于 Python 的文件备份》: 备份界面

扫码关注微信公众号
Copyright @2016-2017 | 赣ICP备16003025号