• Tkinter学习笔记(一):完成文件选择和保存对话框


    关键模块总结

    • 导入关键包tkinter
    • 打开文件:askopenfilename
    • 打开多个文件:askopenfilenames
    • 保存文件:asksaveasfilename

    打开文件

    def open_file():
        global file_path
        global file_text
        file_path = filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser('')))
        print('打开文件:', file_path)
        if file_path is not None:
            lb.config(text = "您选择的文件是:"+file_path)
            with open(file=file_path, mode='r+', encoding='utf-8') as file:
                file_text = file.read()
            text1.insert('insert', file_text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    保存文件

    def save_file():
        global file_path
        global file_text
        file_path = filedialog.asksaveasfilename(title=u'保存文件')
        print('保存文件:', file_path)
        lb.config(text="您保存的文件是:" + file_path)
        file_text = text1.get('1.0', tk.END)
        if file_path is not None:
            with open(file=file_path, mode='a+', encoding='utf-8') as file:
                file.write(file_text)
            text1.delete('1.0', tk.END)
            dialog.Dialog(None, {'title': 'File Modified', 'text': '保存完成', 'bitmap': 'warning', 'default': 0,
                                 'strings': ('OK', 'Cancle')})
            print('保存完成')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    完整代码

    # !# !/user/bin/env Python3
    # -*- coding:utf-8 -*-
    import tkinter as tk
    from tkinter import filedialog, dialog, Label
    import os
    
    def open_file():
        global file_path
        global file_text
        file_path = filedialog.askopenfilename(title=u'选择文件', initialdir=(os.path.expanduser('')))
        print('打开文件:', file_path)
        if file_path is not None:
            lb.config(text = "您选择的文件是:"+file_path)
            with open(file=file_path, mode='r+', encoding='utf-8') as file: # 只读
                file_text = file.read()
            text1.insert('insert', file_text)
    
    def save_file():
        global file_path
        global file_text
        file_path = filedialog.asksaveasfilename(title=u'保存文件')
        print('保存文件:', file_path)
        lb.config(text="您保存的文件是:" + file_path)
        file_text = text1.get('1.0', tk.END)
        if file_path is not None:
            with open(file=file_path, mode='a+', encoding='utf-8') as file: # 追加
                file.write(file_text)
            text1.delete('1.0', tk.END)
            dialog.Dialog(None, {'title': 'File Modified', 'text': '保存完成', 'bitmap': 'warning', 'default': 0,
                                 'strings': ('OK', 'Cancle')})
            print('保存完成')
    
    if __name__ == '__main__':
        window = tk.Tk()
        lb = Label(window,text = '')
        lb.pack()
        window.title('窗口标题')  # 标题
        window.geometry('500x500')  # 窗口尺寸
        text1 = tk.Text(window, width=50, height=10, bg='red', font=('Arial', 12))
        text1.pack()
        bt1 = tk.Button(window, text='打开文件', width=15, height=2, command=open_file)
        bt1.pack()
        bt2 = tk.Button(window, text='保存文件', width=15, height=2, command=save_file)
        bt2.pack()
        window.mainloop()  # 显示
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    运行效果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    移动端研发技术的进化历程
    文档在线预览word、pdf、excel文件转html以实现文档在线预览
    flink学习之旅(二)
    阿里巴巴面试题:多线程相关
    递归 python
    Springboot毕业设计毕设作品,纯净水商城配送系统 开题报告
    Apache Spark 的基本概念和在大数据分析中的应用
    通信真的是天坑专业吗?应届毕业生出来能做什么?
    备赛蓝桥杯-算法-动态规划
    2024北京护眼产品展/北京眼视光展/北京叶黄素展/中国眼博会
  • 原文地址:https://blog.csdn.net/m0_51004308/article/details/125498169