自2019年7月上海率先实施垃圾分类政策以来,多个城市相继出台垃圾分类政策,积极响应国家号召,努力建设绿色环保新城。预计到2020年底,46个重点城市率先测试!前段时间,小编所在的城市蓝鲸也开始了垃圾分类。每次去扔垃圾,都要提前科普一下:这是什么垃圾!好麻烦,既然在玩Python,不如自己写个程序学垃圾分类,一晚上终于搞定了。01.垃圾分类数据获取按照《上海市生活垃圾管理条例》,城市生活垃圾主要分为以下四类:危险废物是指对人体健康或自然环境造成直接或潜在危害的废电池、废灯具、废药品、废油漆及其容器;湿垃圾是指易腐垃圾,指易腐烂的生物质生活垃圾,如餐厨垃圾、剩饭剩菜、过期食品、瓜皮果核、花卉绿植、中药药渣等;干垃圾、其他垃圾,是指除湿垃圾以外的除可回收物、有害垃圾和其他生活垃圾。为了获取垃圾分类数据集,小编通过查找资料在码云中找到了一个垃圾分类数据库。该数据库共包含五类:可回收垃圾、有害垃圾、湿垃圾、干垃圾和大件垃圾,每个类别的垃圾数量如下表所示:02.垃圾分类学习器设计1).总体设计思路。垃圾分类学习器包括两部分:学习模块和测试模块。用户可以根据自己的需要学习垃圾分类。学习一定量后,使用测试模块测试你的学习成果,检查你是否能正确分类垃圾。整个学习器的设计过程包括数据处理、学习模块搭建、测试模块搭建三个部分。接下来,小编将为每个模块进行编程。2).数据处理这里使用大名鼎鼎的pandas进行数据处理。通过pd.read_csv可以得到原始表数据,通过修改dfdf["class"]==2中的参数号2可以得到不同类型垃圾的列表。此时,就很容易了获取各种垃圾并列出不同种类垃圾的数据。3).学习模块搭建学习模块包括垃圾分类含义的展示、四种常见垃圾的图标展示、不同种类垃圾的滑动文本框展示。下面将详细介绍该方案。上面的代码是垃圾分类的意义和四种常见垃圾的图标显示的程序。从程序中可以看出,展示设计的思路大致如下:首先,创建一个对应的tk。位置;然后使用tk.Label标签显示文字信息,嵌入到tk.Frame的具体位置来显示图片显示不是那么简单,需要在根主窗口新建一个tk.Canvas,并根据对设计好的图片大小进行resize,可以显示canvas2.create_image创建的图片;4).对于枚举式垃圾的展示,垃圾的分类比较复杂。下面将详细介绍:为了实现不同类型垃圾的显示和学习,需要调用按钮回调函数获取枚举类的信息,然后根据显示相应类型的垃圾信息获得的信息。我们首先设置垃圾类别列表,通过OptionMenu组件显示枚举类别;为了实现类别的实时更新,调用按钮的回调函数garbage_process,写入scrolledtext.ScrolledText滚动文本框;这里需要注意的是,如果把scrolledtext.ScrolledText放在根主界面上,位置会错位;这里编辑器新建一个canvas3画布,scrolledtext.ScrolledText放在canvas3画布上显示;至此学习模块界面设计完成,展示效果如下:03.测试模块构建测试模块,其构建思路与垃圾枚举类类似,只是增加了一个单选按钮模块,并且用户可以进行自测,检验自己的学习成果。在上面的代码中可以看到,所有的垃圾名称都是作为枚举类OptionMenu对象获取来创建下拉选项的,用户可以在数据库中选择垃圾类型进行自检。选择垃圾后,对垃圾进行分类,使用Radiobutton组件选择垃圾类型,选择完成后,左键按下选择练习按钮,调用ceshi_process函数与数据库中的信息进行比较,输出结果。如果正确,给予鼓励,否则正确。整体界面如下图:最后来演示一下整个过程:原创真的不容易。从这个idea的产生,到代码设计,资料收集,最后编写调试,小编辛苦了一个周末才完成。看着自己完成的小玩意儿,我也很有成就感呢!我会录个视频放在我们B站(搜索:菜鸟玩Python),然后一起发源码视频!希望大家加入到垃圾分类的队伍中来,保护环境,从你我做起,让水更清,天更蓝,贡献一份力量!
