• python tkinter 的使用 — 桌面应用程序开发


    前言

    嗨喽,大家好呀~这里是爱看美女的茜茜呐

    又到了学Python时刻~

    Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口.

    Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里.

    Tk8.0的后续版本可以通过ttk实现本地窗口风格,并良好地运行在绝大多数平台中.

    此外,tkinter.tix还提供了更丰富的窗口组件

    今天我们就用tkinter来写一个简单的电脑文件搜索工具

    开发环境:

    1. 解释器: Python 3.8.8 | Anaconda, Inc.

    2. 编辑器: pycharm 专业版

    效果展示

    代码展示

    导入模块

    import tkinter as tk
    from tkinter import filedialog
    import os
    
    • 1
    • 2
    • 3
    root = tk.Tk()
    root.geometry('600x300')
    root.title('学习资料搜索工具')
    
    • 1
    • 2
    • 3

    搜索框

    search_frame = tk.Frame(root)
    search_frame.pack()
    
    tk.Label(search_frame, text='关键字:').pack(side=tk.LEFT, padx=10, pady=10)
    key_entry = tk.Entry(search_frame)  # 创建一个输入框
    key_entry.pack(side=tk.LEFT, padx=10, pady=10)  # 将输入框显示到界面
    tk.Label(search_frame, text='文件类型:').pack(side=tk.LEFT, padx=10, pady=10)
    type_entry = tk.Entry(search_frame)
    type_entry.pack(side=tk.LEFT, padx=10, pady=10)
    button = tk.Button(search_frame, text='搜索')
    button.pack(side=tk.LEFT, padx=10, pady=10)
    list_box = tk.Listbox(root)
    list_box.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    点击按钮搜索文件

    def search():
        print('按钮被点击了')
    
    • 1
    • 2
    1. 获取关键字、文件类型
        key = key_entry.get()
        file_type = type_entry.get()
        print(key, file_type)
    
    • 1
    • 2
    • 3
    1. 读取 windows 系统的文件
        dir_path = filedialog.askdirectory()
        print(dir_path)  # 遍历文件,实现搜索功能
        file_list = os.walk(dir_path)
        for root_path, dirs, files in file_list:
    
    • 1
    • 2
    • 3
    • 4

    目录路径,目录下的子目录,目录下的文件

            # print(root_path, dirs, files)
            for file in files:
                # 过滤文件类型,搜索关键字
                if type_entry:  # py 如果输入了类型,就进行过滤,如果没有输入,就不过滤类型
                    if file.endswith(file_type):
                        # 搜索关键字
                        content = open(root_path + '/' + file, mode='r', encoding='utf-8-sig').read()
                        if key in content:
                            print(root_path + '/' + file)
                            # 把结果显示到界面上
                            list_box.insert(tk.END, root_path + '/' + file)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    1. 实现搜索功能

    2. 将搜索到的结果显示到界面

    创建滚动窗口并布局到页面上

    sb = tk.Scrollbar(root)
    sb.pack(side=tk.RIGHT, fill=tk.Y)
    sb.config(command=list_box.yview)
    list_box.config(yscrollcommand=sb.set)
    
    button.config(command=search)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    def list_click(event):
        print('列表框组件的内容被点击了')
    
    • 1
    • 2
    1. 获取到选中的内容
        index = list_box.curselection()[0]
        path = list_box.get(index)
        print(path)
    
    • 1
    • 2
    • 3
    1. 读取选中路径的内容
        content = open(path, mode='r', encoding='utf-8').read()
        print(content)
    
    • 1
    • 2
    1. 将内容显示到新的窗口
        top = tk.Toplevel(root)
        filename = path.split('/')[-1]
        top.title(filename)
        text = tk.Text(top)
        text.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
        text.insert(tk.END, content)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    绑定点击事件

    list_box.bind('', list_click)
    
    root.mainloop()
    
    • 1
    • 2
    • 3

    PS:文章看不懂,我专门录了对应的视频讲解,本文只是大致展示,完整代码和视频教程如有需要的小伙伴可以加下方的群去找免费管理员领取

    分享

    兄弟们学习python,有时候不知道怎么学,从哪里开始学。掌握了基本的一些语法或者做了两个案例后,不知道下一步怎么走,不知道如何去学习更加高深的知识。

    那么对于这些小伙伴们,我准备了大量的免费视频,PDF电子书籍,以及源代码!

    直接点击这里领取即可! 我都放在这里了。

    希望对各位有所帮助~




    尾语 💝

    感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

    希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

    躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

    最后,博主要一下你们的三连呀(点赞、评论、收藏),不要钱的还是可以搞一搞的嘛~

    不知道评论啥的,即使扣个6666也是对博主的鼓舞吖 💞 感谢 💐

  • 相关阅读:
    问界M7的诸多优点(自动驾驶走进我们的生活二)
    Git高频命令【最实用命令】
    Linux 进程管理
    java基于微信小程序的在线课程报名学习交流系统 uniapp 小程序
    【RV1103】如何新增一个新板级配置
    23上半年下午题
    入坑 Node.js 1
    优思学院|“防呆”的英文是哪个才对?- CLMP
    GORM CRUD 5 分钟快速上手
    2022-09-05 mysql/stonedb-物理存储层-DPN解析
  • 原文地址:https://blog.csdn.net/m0_72282564/article/details/128056679