forked from p46318075/CodePattern
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
65 lines
1.9 KiB
import sys
|
|
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QTextEdit, QFileDialog
|
|
import cppy.cp_util as util
|
|
|
|
# 工具函数
|
|
def extract_words(path_to_file):
|
|
return util.extract_words(path_to_file)
|
|
|
|
def frequencies(word_list):
|
|
return util.get_frequencies(word_list)
|
|
|
|
def sort(word_freq):
|
|
return util.sort_dict(word_freq)
|
|
|
|
class MenuApp(QWidget):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.initUI()
|
|
|
|
def initUI(self):
|
|
self.setWindowTitle('终端菜单')
|
|
self.setGeometry(100, 100, 400, 300)
|
|
|
|
# 创建按钮
|
|
self.openFileBtn = QPushButton('上传并打开文件', self)
|
|
self.continueBtn = QPushButton('继续', self)
|
|
self.exitBtn = QPushButton('退出', self)
|
|
|
|
# 创建文本编辑框
|
|
self.textEdit = QTextEdit(self)
|
|
self.textEdit.setReadOnly(True)
|
|
|
|
# 布局
|
|
layout = QVBoxLayout()
|
|
layout.addWidget(self.openFileBtn)
|
|
layout.addWidget(self.continueBtn)
|
|
layout.addWidget(self.exitBtn)
|
|
layout.addWidget(self.textEdit)
|
|
|
|
self.setLayout(layout)
|
|
|
|
# 信号连接到槽
|
|
self.openFileBtn.clicked.connect(self.openFile)
|
|
self.continueBtn.clicked.connect(self.clearText)
|
|
self.exitBtn.clicked.connect(self.close)
|
|
|
|
def openFile(self):
|
|
options = QFileDialog.Options()
|
|
fileName, _ = QFileDialog.getOpenFileName(self, "上传并打开文件", "", "All Files (*);;Text Files (*.txt)", options=options)
|
|
word_freqs = sort( frequencies(extract_words( fileName )) )
|
|
s = ''
|
|
for (w, c) in word_freqs[ :10 ]:
|
|
s = s + w + '-' + str(c)+'\n'
|
|
self.textEdit.setText(s)
|
|
|
|
|
|
def clearText(self):
|
|
self.textEdit.clear()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app = QApplication(sys.argv)
|
|
ex = MenuApp()
|
|
ex.show()
|
|
sys.exit(app.exec_()) |