【指令碼專案原始碼】Python實現魯迅名言查詢系統
阿新 • • 發佈:2022-12-13
前言
本文給大家分享的是如何通過利用Python實現魯迅名言查詢系統,廢話不多直接開整~
開發工具
Python版本: 3.6
相關模組:
PyQt5模組
fuzzywuzzy模組
環境搭建
安裝Python並新增到環境變數,pip安裝需要的相關模組即可。
文中實戰教程,評論留言獲取。
程式碼實現
簡單的GUI
class GUI(QWidget): def __init__(self, parent=None): super().__init__() self.setWindowTitle('魯迅名言查詢-公眾號:Python工程獅') self.setWindowIcon(QIcon('data/icon.png')) self.label1 = QLabel('句子:') self.line_edit = QLineEdit() self.label2 = QLabel('查詢結果:') self.text = QTextEdit() self.button = QPushButton() self.button.setText('查詢') self.cmb = QComboBox() self.cmb.setStyle(QStyleFactory.create('Fusion')) self.cmb.addItem('匹配度: 100%') self.cmb.addItem('匹配度: 90%') self.cmb.addItem('匹配度: 80%') self.cmb.addItem('匹配度: 70%') self.grid = QGridLayout() self.grid.setSpacing(12) self.grid.addWidget(self.label1, 1, 0) self.grid.addWidget(self.line_edit, 1, 1, 1, 38) self.grid.addWidget(self.button, 1, 39) self.grid.addWidget(self.label2, 2, 0) self.grid.addWidget(self.text, 2, 1, 1, 40) self.grid.addWidget(self.cmb, 1, 40) self.setLayout(self.grid) self.resize(600, 400) self.button.clicked.connect(self.inquiry) self.paragraphs = self.loadData('data/book.txt')
查詢
def inquiry(self): sentence = self.line_edit.text() matched = [] score_thresh = self.getScoreThresh() if not sentence: QMessageBox.warning(self, "Warning", '請先輸入需要查詢的魯迅名言') else: for p in self.paragraphs: score = fuzz.partial_ratio(p, sentence) if score >= score_thresh and len(sentence) <= len(p): matched.append([score, p]) infos = [] for match in matched: infos.append('[匹配度]: %d\n[內容]: %s\n' % (match[0], match[1])) if not infos: infos.append('未匹配到任何相似度大於%d的句子.\n' % score_thresh) self.text.setText('\n\n\n'.join(infos)[:-1])
根據下拉框選項獲取匹配度
def getScoreThresh(self):
if self.cmb.currentIndex() == 0:
return 100
elif self.cmb.currentIndex() == 1:
return 90
elif self.cmb.currentIndex() == 2:
return 80
elif self.cmb.currentIndex() == 3:
return 70
資料匯入
def loadData(self, data_path): paragraphs = [] with open(data_path, 'r', encoding='utf-8') as f: for line in f.readlines(): if line.strip(): paragraphs.append(line.strip('\n')) return paragraphs
執行
if __name__ == '__main__':
app = QApplication(sys.argv)
gui = GUI()
gui.show()
sys.exit(app.exec_())
結果展示
最後
今天的分享到這裡就結束了 ,感興趣的朋友也可以去試試哈
對文章有問題的,或者有其他關於python的問題,可以在評論區留言或者私信我哦
覺得我分享的文章不錯的話,可以關注一下我,或者給文章點贊(/≧▽≦)/