前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python | “一个简单的清单软件easybill”

Python | “一个简单的清单软件easybill”

作者头像
LogicPanda
发布2018-08-30 11:45:59
9900
发布2018-08-30 11:45:59
举报

图文编辑:逻辑熊猫 图片来源:网络与截图 主要内容:面向初学者的清单软件

一个软件的关键在于,你想用它做什么!

关于写这个软件的目的:

  • 读者留言给我说想看GUI方面的内容
  • 用Python做一点有用的事情

一、演示

二、代码

已上传到Github : https://github.com/lizechen2018/easybill

可以使用git clone https://github.com/lizechen2018/easybill克隆到你的电脑上。

import easygui as w

w.msgbox('欢迎使用easybill',"easybill")
class Bill:
   '''
   A easy bill built in easygui
   You can use this script:
   addaffair
   displayaffairs
   removeaffair
   finishaffair
'''
   def __init__(self):
       self.schedule_file = '待办事件'
       self.achieve_file = '完成记录'

   def getAll(self, file):
       f = open(file)
       lines = []
       for each_line in f:
           lines.append(each_line)
       f.close()
       return lines
           
   def appendaffair(self):
       """添加待办事件"""
       enterline = w.enterbox('请输入事件内容','easybill')
       f = open(self.schedule_file , 'a')
       if type(enterline) is str:
           f.write(enterline)
           f.write('\n')
           f.close()

   def displaySchedule(self):
       """Display the Schedule!"""
       f = open('待办事件', 'r')
       w.textbox('待办事件', 'Display', f)
       f.close()

   def removeAffair(self, file, affair):
       f = open(file, 'r')
       lines = []
       for each_line in f:
           lines.append(each_line)
       f.close()
       if affair in lines:
           lines.remove(affair)
           f = open(file, 'w')
           for each in lines:
               f.write(each)
           f.close
       else:
           pass

   def delSchedule(self):
       f = open('待办事件', 'r')
       lines = []
       for each_line in f:
           lines.append(each_line)
       f.close()
       if len(lines) > 0:
           getDelSchedule = w.choicebox('选择要删除的事件','', lines)
           lines.remove(getDelSchedule)
           f = open('待办事件', 'w')
           for each in lines:
               f.write(each)
           f.close()
           w.msgbox("已经成功删除了 %s " % getDelSchedule)
       else:
           w.msgbox("没有待办事件!")

   

   def finishSchedule(self):
       """Move the affair to the Record"""
       f = open('待办事件')
       lines = []
       for each_line in f:
           lines.append(each_line)
       f.close()
       getRecord = w.choicebox('选择已完成的事件','', lines)
       self.removeAffair('待办事件',getRecord)
       f = open('完成记录', 'a')
       f.write(getRecord)
       f.write('\n')
       f.close()

   def displayRecord(self):
       '''Display the Record of the having finished'''
       f = open('完成记录', 'r')
       w.textbox('完成记录', 'Display', f)
       f.close()

   def delRecord(self):
       f = open('完成记录')
       lines = []
       for each_line in f:
           lines.append(each_line)
       f.close()
       if len(lines) > 0:
           getRecord = w.choicebox('请选择要删除的记录\n删除之后会显示所有记录\n','删除记录', lines)
           self.removeAffair('完成记录', getRecord)
           self.displayRecord()
       else:
           w.msgbox("还没有记录,赶紧去完成事件吧。")
       pass

   def choiceFunction(self):
       while True:
           getfun = w.choicebox('要做什么呢?', 'easybill', ('添加事件', '查看事件', '删除事件',
                                  '完成事件', '查看记录','删除记录', '退出'))
           if   getfun == '添加事件':
               self.appendaffair()
           elif getfun == '查看事件':
               self.displaySchedule()
           elif getfun == '完成事件':
               self.finishSchedule()
           elif getfun == '删除事件':
               self.delSchedule()
           elif getfun == '查看记录':
               self.displayRecord()
           elif getfun == '删除记录':
               self.delRecord()
           else:
               exit(1)


start = Bill()
start.choiceFunction()

三、代码讲解

代码的原理非常简单,那就是获取字符串然后将字符串写到文件,对文件进行操作。

GUI方面,由于新手并不熟悉tkinter,为了快速开发,使用了easygui模块,该模块完全以tkinter为基础,提供了便捷的方法,支持快速开发出一个像样的GUI程序。

使用此代码需要在工作目录下准备两个文件,“待办事件”和“完成记录”。否则会报错。

提供6个基本功能

  • 添加事件:将字符串写到文件
  • 显示事件:从文件读取所有内容
  • 删除事件:将内容从文件中删除
  • 完成事件:将文件中的内容搬运到另一个文件
  • 查看记录:从文件读取内容
  • 删除记录:将文件中的内容删除

四、自我评价

优点:原理简单,适合初学者学习和使用。

缺点:部分bug未处理,未经优化,过于冗长

五、结尾

功能简介:领域包括了「面向 Python 基础,进阶和有趣应用」的一站式技术分享,挖掘学习者在学习当中遇到的各类问题并分享经验,关注实用技能和有趣新闻,感兴趣的推荐关注。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 逻辑熊猫带你玩Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档