/word-counting

计算文本文件中字占总字数的比例用饼图绘制

Primary LanguagePython

Word Count

Dependency

  • matplotlib
  • tkinter
  • re
  • threading

Usage

python MainWindow.py

选择文件打开,并且输入所需显示的出现频率百分数

Structure

File Structure

  • demo (存放展示图片)
  • test (存放单元测试文件)
    • test_arc.py (matplotlib.pyplot绘图测试)
    • test_embedded_tk.py (tkinter窗体内嵌pyplot测试)
    • test_thread.py (多线程绘图测试)
    • wordCount.py (文本文件计数测试)
    • wordGenerate.py (生成测试所用文本文件)
  • venv (python虚拟环境)
  • InputDialog.py (输入对话框类)
  • MainWindow.py (主窗体类,程序入口)
  • .gitignore
  • README.md (readme)
  • book.txt (哈利波特)
  • 西游记.txt (西游记)

Class Hierarchy

  • MainWindow.MainWindow类字段root作为主窗体,实现代码主逻辑,聚合InputDialog.InputDialog
  • InputDialog.InputDialog类继承tkinter窗体,实现输入框功能

Implementation

  • tkinter与matplotlib结合,利用tkinter的canvas实现对pyplot的绘制
  • 利用matplotlib提供的NavigationToolbar2Tk将pyplot的导航栏内嵌到tkinter窗体中
  • 利用tkinter的打开文件对话框实现对文件的获取
  • InputDialog作为子窗体循环,quit函数将控制权返回给主窗体循环
  • 利用threading模块另开线程读取文件进行文字统计,从而不影响窗体循环,使得用户可以继续进行操作
  • 利用re模块进行正则匹配筛选文本

Feature

  • 面向对象,逻辑简洁
  • 单元测试,代码可靠
  • 窗体循环,可多次查看不同文件不同比率字数统计情况
  • 多线程处理数据,对于内容庞大/统计比率较高的文件体验好
  • 内嵌导航栏,功能齐全