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

运行效果

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

目录
相关文章
element-ui下拉框el-select多选出现滚动条闪现
弹窗组件中放置了el-select下拉框组件,多选项较多时,聚焦弹出下拉选择框时,下方会出现一个横向滚动条闪现一下,虽然不影响使用,但是作为一个追求完美的码农肯定是受不了
|
算法 Shell 测试技术
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
Monkey 常用命令详解含高级参数应用
|
虚拟化 Docker Windows
Docker - Win10 Hyper-V 和 VirtualBox 冲突的问题
Docker - Win10 Hyper-V 和 VirtualBox 冲突的问题
1441 0
|
Python
tkinter 官方内置颜色
这段内容是一个关于使用Python的Tkinter库来展示官方内置颜色的代码示例。代码通过循环遍历一个包含颜色名称和十六进制颜色代码的字符串,然后创建Label组件并将背景色设置为对应的颜色。效果是生成一个网格布局的窗口,每个单元格显示一种颜色及其名称。此外,还提到了如何自定义颜色,通过RGB值转换成十六进制来设定背景色。提供的图片展示了颜色展示窗口的实际效果。
856 1
tkinter 官方内置颜色
|
人工智能 自然语言处理 搜索推荐
销售易CRM:深度赋能企业销售全流程
销售易CRM是国内领先的客户关系管理系统,助力企业实现销售全流程自动化、数据驱动精准决策、跨部门高效协作及个性化定制。通过智能线索培育、实时数据分析、无缝系统集成与灵活业务调整,大幅提升销售效率与客户体验。结合AI技术与全面服务支持,销售易CRM成为企业数字化转型的可靠伙伴,推动企业在竞争中脱颖而出。
|
消息中间件
RabbitMQ 实现消息队列延迟
RabbitMQ 实现消息队列延迟
1262 0
|
前端开发 JavaScript API
说一说你对混合开发(Hybrid Development)的了解。
混合开发(Hybrid App)融合Web与原生技术,实现跨平台开发,降低多平台工作量。使用JavaScript等Web技术提升开发效率,通过React Native、Flutter等框架结合原生API。虽性能略逊于原生,但体验接近,且更新便捷、成本效益高。丰富的社区支持和成功案例(如网易云音乐、闲鱼)证明其可行性。随着技术进步,混合开发的潜力和应用将不断扩大。
974 1
|
Linux Shell 开发工具
Linux Vim批量注释和自定义注释
在Vim中,快速批量注释和取消Shell脚本的多行可以使用替换命令。例如,用`:1,10s/^/#/g`在第1到10行行首加`#`注释,`:1,10s/^#//g`则移除这些行的行首`#`。定义快捷键如`:map^P l#<Esc>`(需用Ctrl+V+P生成^P)能一键在当前行添加`#`注释。要取消注释,可以定义`:map^B 0x`来删除行首字符。通过`.vimrc`保存快捷键设置,可使它们在每次启动Vim时生效。
720 6
|
人工智能 自然语言处理 搜索推荐
智源研究院开源中文互联网语料库CCI3.0,1000GB数据集,498GB高质量子集,魔搭社区可下载
近日,智源研究院正式发布中文互联网语料库CCI 3.0(Chinese Corpora Internet,简称 CCI)