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

简介: 关于如何使用Python的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)

保存文件

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('保存完成')

完整代码

# !# !/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()  # 显示

运行效果

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

目录
相关文章
|
安全 开发者 C++
Windows10安装modelscope后import这个模块报错:OSError: [WinError 1] 函数不正确。: 'D:\Anaconda\envs\MDS\lib\site-packages\modelscope\utils\ast_utils.py'
Windows10安装modelscope后import这个模块报错:OSError: [WinError 1] 函数不正确。: 'D:\Anaconda\envs\MDS\lib\site-packages\modelscope\utils\ast_utils.py'
571 1
|
对象存储
minio临时凭证直传切换到阿里云oss
minio临时凭证直传切换到阿里云oss
786 1
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
810 0
|
12月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
587 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
7月前
|
人工智能 自然语言处理 搜索推荐
销售易CRM:深度赋能企业销售全流程
销售易CRM是国内领先的客户关系管理系统,助力企业实现销售全流程自动化、数据驱动精准决策、跨部门高效协作及个性化定制。通过智能线索培育、实时数据分析、无缝系统集成与灵活业务调整,大幅提升销售效率与客户体验。结合AI技术与全面服务支持,销售易CRM成为企业数字化转型的可靠伙伴,推动企业在竞争中脱颖而出。
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
952 0
|
Linux 虚拟化 Docker
深入了解Windows安装Docker
【8月更文挑战第22天】深入了解Windows安装Docker
634 0
|
算法 数据处理 数据安全/隐私保护
深入NumPy的随机数生成机制
【4月更文挑战第17天】本文探讨了NumPy的随机数生成机制,强调了伪随机数在科学计算中的重要性。NumPy提供了多种生成器,如`RandomState`(基于Mersenne Twister)、`Generator`(灵活且强大)和`default_rng`(推荐,基于PCG64)。生成随机数涉及初始化生成器、设置种子和调用相关方法。关注生成器的质量和性能,遵循最佳实践,如避免硬编码种子、使用最新NumPy版本以及选择合适的生成器和分布,能有效提升数据处理效率和准确性。
|
关系型数据库 MySQL 数据库
mysql 字符串拼接的几种方式
mysql 字符串拼接的几种方式
942 0
C# 对于“日期时间(DateTime)“的处理 时间差计算
C# 对于“日期时间(DateTime)“的处理 时间差计算