基于 Python 的 tkinter 模块制作的名人名言查询工具

2021-03-26 03:26

阅读:626

标签:graph   shadow   end   bit   menu   python   鲁迅   默认   ase   

  • 简介:本文主要介绍如何用 Python 内置的 tkinter 写一个查询工具。
  • 很多人学习python,不知道从何学起。
    很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
    很多已经做案例的人,却不知道如何去学习更加高深的知识。
    那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
    QQ群:961562169

准备

  • 环境
    • Windows 10
    • Python 3.7.3
    • VS Code
  • 依赖
    • tkinter
    • python-Levenshtein
    • fuzzywuzzy

目录结构及运行界面

技术图片技术图片?

图1 目录结构图

 

技术图片技术图片?

图2 查询界面图

 

技术图片技术图片?

图3 查询结果图

 

具体实现

import tkinter as tk
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from fuzzywuzzy import fuzz


class Window(object):

    def __init__(self):
        root = tk.Tk()
        root.minsize(580, 320)  # 窗口大小
        root.resizable(width=False, height=False)  # False窗口大小不可变

        # root.iconbitmap(‘data/icon.ico‘)   # 无法显示图片

        root.title(‘鲁迅:都是我说的?!‘)  # 窗口标题

        label1 = Label(text=‘句子:‘)  # 标签
        label1.place(x=10, y=10, width=80, height=25)  # 确定位置
        self.line_text = Entry(root)  # 单行文本输入
        self.line_text.place(x=80, y=10, width=300, height=25)
        button = Button(text=‘开始查询‘, command=self.inquiry)  # 按钮
        button.place(x=390, y=10, width=60, height=25)

        self.filemenu = tk.StringVar()  # 下拉列表
        self.file_menu = ttk.Combobox(root, width=12, textvariable=self.filemenu)
        # 列表内容
        self.file_menu[‘values‘] = (‘匹配度: 100%‘, ‘匹配度: 90%‘,
                                    ‘匹配度: 80%‘, ‘匹配度: 70%‘)
        self.file_menu.place(x=460, y=10, width=100, height=25)
        self.file_menu.current(0)  # 当前显示 100%

        label2 = Label(text=‘查询结果:‘)
        label2.place(x=10, y=100, width=80, height=20)
        self.text = Text(root)  # 多行文本显示
        self.text.place(x=80, y=50, width=480, height=240)

        self.paragraphs = self.load_data(‘data/book.txt‘)  # 数据文件
        root.mainloop()  # 主循环

    ‘‘‘查询‘‘‘

    def inquiry(self):
        sentence = self.line_text.get()  # 获取输入的内容
        matched = []
        score_thresh = self.get_score_thresh()
        self.text.delete(1.0, tk.END)  # 用于删除后续显示的文件
        if not sentence:  # 没有输入句子就查询,会出现弹窗警告
            messagebox.showinfo("Warning", ‘请先输入需要查询的鲁迅名言‘)
        else:
            for p in self.paragraphs:
                score = fuzz.partial_ratio(p, sentence)
                if score >= score_thresh and len(sentence) 
技术图片

小结

  • 本文借鉴地址:https://github.com/CharlesPikachu/Tools/tree/master/luxunSentencesQuery 此地址代码基于 PyQt5 模块,Python 版本为 3.6。由于我的 Python 版本为3.7,兼容存在问题,所以我用tkinter 模块改写了代码。原地址教程很详细,感兴趣,可以尝试 PyQt5。
  • 以鲁迅全集为例,通过一句话,查询是否为鲁迅所说。您可以替换成自己想要查询的人物,或者其他资料。
  • 小问题
    • 窗口默认图标为羽毛,这里想要设置自定义图标,通过以下代码 root.iconbitmap(‘data/icon.ico‘),并不能成功,修改图片格式为 .jpg 仍不能成功,各位如能解决,劳烦告知,谢谢。

基于 Python 的 tkinter 模块制作的名人名言查询工具

标签:graph   shadow   end   bit   menu   python   鲁迅   默认   ase   

原文地址:https://www.cnblogs.com/41280a/p/13724042.html


评论


亲,登录后才可以留言!