使用Python Tkinter创建文件生成工具

我们将使用Python的Tkinter模块创建一个简单的文件生成工具。这个工具可以用来创建Excel、文本、Python脚本和Word文档等不同类型的文件。

1、准备工作

首先,确保你已经安装了Python和所需的第三方库:Tkinter、openpyxl和python-docx。你可以使用pip来安装它们:

pip install tkinter openpyxl python-docx

2、创建GUI界面

我们将使用Tkinter模块来创建用户界面。以下是创建主窗口和调用文件类型选择对话框的代码:

import tkinter as tk
from tkinter import simpledialog
from tkinter import messagebox
from openpyxl import Workbook
from docx import Document# 定义创建文件的函数...def show_file_dialog():root = tk.Tk()root.withdraw()# 创建文件类型选择对话框的代码...window.mainloop()show_file_dialog()

3、创建不同类型的文件

接下来,我们将编写函数来创建Excel、文本、Python脚本和Word文档等不同类型的文件。

# 定义创建文件的函数...def create_excel_file():wb = Workbook()wb.save('new_document.xlsx')messagebox.showinfo("成功", "新的 Excel 文件创建成功。")def create_text_file():with open('new_document.txt', 'w') as f:f.write("这是一个新的文本文档。")messagebox.showinfo("成功", "新的文本文件创建成功。")def create_python_file():with open('new_document.py', 'w') as f:f.write("# 这是一个新的 Python 脚本。\n\nprint('你好,世界!')")messagebox.showinfo("成功", "新的 Python 脚本文件创建成功。")def create_word_file():doc = Document()doc.save('new_document.docx')messagebox.showinfo("成功", "新的 Word 文档创建成功。")

4、显示文件类型选择对话框

最后,我们将完善show_file_dialog函数,以便用户可以选择要创建的文件类型。

# 创建文件类型选择对话框的代码...def show_file_dialog():root = tk.Tk()root.withdraw()file_types = ['xlsx', 'txt', 'py', 'docx']window = tk.Toplevel(root)window.geometry("300x100")file_type_var = tk.StringVar(window)file_type_var.set(file_types[0])file_type_menu = tk.OptionMenu(window, file_type_var, *file_types)file_type_menu.pack()def on_ok():file_type = file_type_var.get()if file_type:if file_type == 'xlsx':create_excel_file()elif file_type == 'txt':create_text_file()elif file_type == 'py':create_python_file()elif file_type == 'docx':create_word_file()window.destroy()root.destroy()ok_button = tk.Button(window, text="确定", command=on_ok)ok_button.pack()window.mainloop()show_file_dialog()

现在,当用户运行程序时,将会弹出一个窗口,用户可以选择要创建的文件类型,并点击“确定”按钮,然后相应的文件将会被创建。

5、完整代码

import tkinter as tk  # 导入Tkinter模块,用于创建GUI界面
from tkinter import simpledialog  # 导入simpledialog模块,用于创建简单的对话框
from tkinter import messagebox  # 导入messagebox模块,用于显示消息框
from openpyxl import Workbook  # 导入openpyxl模块,用于处理Excel文件
from docx import Document  # 导入docx模块,用于处理Word文档# 定义函数:创建一个新的Excel文件
def create_excel_file():wb = Workbook()  # 创建一个Workbook对象wb.save('new_document.xlsx')  # 将Workbook对象保存为Excel文件messagebox.showinfo("成功", "新的 Excel 文件创建成功。")  # 显示消息框,提示文件创建成功# 定义函数:创建一个新的文本文件
def create_text_file():with open('new_document.txt', 'w') as f:f.write("这是一个新的文本文档。")  # 向文件中写入内容messagebox.showinfo("成功", "新的文本文件创建成功。")  # 显示消息框,提示文件创建成功# 定义函数:创建一个新的Python脚本文件
def create_python_file():with open('new_document.py', 'w') as f:f.write("# 这是一个新的 Python 脚本。\n\nprint('你好,世界!')")  # 向文件中写入内容messagebox.showinfo("成功", "新的 Python 脚本文件创建成功。")  # 显示消息框,提示文件创建成功# 定义函数:创建一个新的Word文档
def create_word_file():doc = Document()  # 创建一个Document对象doc.save('new_document.docx')  # 将Document对象保存为Word文档messagebox.showinfo("成功", "新的 Word 文档创建成功。")  # 显示消息框,提示文件创建成功# 定义函数:显示文件类型选择对话框
def show_file_dialog():root = tk.Tk()  # 创建一个Tk对象root.withdraw()  # 隐藏Tk窗口# 定义文件类型选项file_types = ['xlsx', 'txt', 'py', 'docx']# 创建一个新窗口window = tk.Toplevel(root)# 设置窗口大小window.geometry("300x100")# 创建下拉菜单以选择文件类型file_type_var = tk.StringVar(window)file_type_var.set(file_types[0])  # 默认选择第一个文件类型file_type_menu = tk.OptionMenu(window, file_type_var, *file_types)file_type_menu.pack()# 定义确认按钮的事件处理函数def on_ok():# 获取用户选择的文件类型file_type = file_type_var.get()# 根据用户选择的文件类型调用相应的函数创建文件,并显示消息框提示用户文件创建成功if file_type:if file_type == 'xlsx':create_excel_file()elif file_type == 'txt':create_text_file()elif file_type == 'py':create_python_file()elif file_type == 'docx':create_word_file()window.destroy()  # 销毁窗口root.destroy()  # 销毁主窗口# 创建确认按钮,点击按钮时触发on_ok函数ok_button = tk.Button(window, text="确定", command=on_ok)ok_button.pack()# 显示对话框window.mainloop()# 调用show_file_dialog函数,运行程序
show_file_dialog()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python项目练习——30.俄罗斯方块

游戏初始化: 设置游戏窗口的大小和标题。创建游戏区域和方块的初始状态。初始化游戏得分和级别。游戏主循环: 不断监听用户的输入,控制方块的移动、旋转和下落。在游戏区域中逐帧显示方块的位置和状态。检测方块是否触底或与其他方块重叠,如果是,则生成新的方块。方块的移…

【软件测试】通过决策表例题学会使用决策表

【软件测试】通过决策表例题学会使用决策表 例题1答案 例题2答案 例题1 有一个程序可以计算某年某月有多少天,请依照决策表测试技术产生测试用例。 要求: 1.每个条件的取值有多种选择,而不再是简单的Yes/No。 2. 需要写出合并后的决策表 3.…

“我舍不得”用英语怎么说?柯桥日常英语口语培训

“我舍不得”用英语怎么说? “舍不得”的英文表达是:Cant bear to 不忍心,不舍得 例句: Time flies. I cant bear to leave you. 时间过的好快啊,我真舍不得离开你。 I cant bear to see you cry. 我真舍不得你…

《QT实用小工具·三十四》Qt/QML使用WebEngine展示的百度ECharts图表Demo

1、概述 源码放在文章末尾 该项目实现了百度ECharts图表的样式&#xff0c;效果demo如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #include <QGuiApplication> #include <QQmlApplicationEngine> #include <QtWebEngine>int main(int argc, ch…

小成本搏大流量:微信/支付宝小程序搜索排名优化

随着移动互联网的快速发展&#xff0c;小程序已成为企业和个人开发者重要的流量入口和业务承载平台。而小程序搜索排名则是影响小程序曝光量、用户获取及业务转化的关键因素。小柚在本文和大家探讨如何制定有效的优化方案&#xff0c;提升小程序在搜索结果中的排名。 首先跟我…

基于docker的Jenkin的服务平台搭建

项目拓扑图 项目环境: jenkins-2.440 sonarqube-9.9.4 apache-maven-3.9.6 gitlab-ce-12.4.2 java17 docker20 harbor.v2.6.0 centos7.9 项目目的: 模拟企业构建一个流行的持续集成和持续部署环境,可以更轻松地创建和管理构建环境&#xff0c;实现自动化构建和部署应用程序的…

Week7-LeetCode

2923.找到冠军(简单) 法1&#xff1a; class Solution:def findChampion(self, grid: List[List[int]]) -> int:Winner 0n len(grid)loser [0 for _ in range(n)] for i in range(n):for j in range(n):if grid[i][j] 1 and i ! j:loser[j] 1for index in range(n):i…

Ubuntu 微调训练ChatGLM3大语言模型

Ubuntu 微调训练ChatGLM3大语言模型 LLaMA Factory 的 LoRA 微调提供了 3.7 倍的加速比&#xff0c;同时在广告文案生成任务上取得了更高的 Rouge 分数。结合 4 比特量化技术&#xff0c;LLaMA Factory 的 QLoRA 微调进一步降低了 GPU 显存消耗。 https://github.com/hiyouga…

累加(C语言)

一、题目&#xff1b; 二、N-S流程图&#xff1b; 三、运行结果&#xff1b; 四、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;int i 0;int j 0;int n 5;int result 0;int sum 0;//运算&#…

在 AOSP / Android 类原生系统上解决 Wifi 连接警告问题

自 Android 5.0 起&#xff0c;谷歌引入了Captive Portal的机制&#xff0c;用于检测 WiFi网络认证是否正常。由于众所周知的原因&#xff0c;我们在中国大陆并无法访问谷歌的网络&#xff0c;这在某些情况下会导致一些问题&#xff0c;例如&#xff1a;在中国大陆使用一些类原…

数据挖掘与数据分析

目录 数据挖掘与数据分析 一&#xff0e;数据的本质 二&#xff0e;什么是数据挖掘和数据分析 三&#xff0e;数据挖掘和数据分析有什么区别 案例及应用 1. 基于分类模型的案例 2. 基于预测模型的案例 3. 基于关联分析的案例 4. 基于聚类分析的案例 5. 基于异常值分析…

牛客-小乐乐与欧几里得

目录 题目 描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 示例2 解题 题目 描述 小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数&#xff0c;但是他竟然不会求两个正整数的最大公约数与最小公倍数之和&#xff0c;请你帮助他解决这个问题。 …

进程控制第二弹(进程程序替换)

文章目录 代码现象基本原理多进程版本实例基本原理 使用所有的替换方法&#xff0c;并且认识函数的参数含义execlexecvexeclp、execvpexecvpe 总结 代码现象 #include<stdio.h> #include<unistd.h> int main() { printf("testexec begin! ...\…

数据安全全面防护

what 通过采用各种有效技术和管理措施来保护网络系统的正常运行&#xff0c;从而保证数据的可用性&#xff0c;机密性&#xff0c;完整性。 ---网络安全防护体系建设三同步--规划 建设 运行 数据安全的三大基本特征 可用性 数据在需要时可用且可访问&#xff0c;为实现可用…

学习JavaEE的日子 Day39 注解,反射

Day39 注解 1.什么是注解 理解&#xff1a;给程序员和程序解释代码信息 2.注解与注释的区别 注释&#xff1a;对程序员解释代码信息 注解&#xff1a;对程序和程序员解释代码信息 3.注解的所用 可以作用于包、类、方法、属性上&#xff0c;给他们添加额外的信息&#xff0c;可…

Fastadmin解决异步高并发大并发阻塞超时问题

官方连接​​​​​​https://guzzle-cn.readthedocs.io/zh_CN/latest/quickstart.html?highlightgetasync 使用guzzle 实现&#xff0c;需要先引用。安装请自行解决。 use GuzzleHttp\Client; use GuzzleHttp\Promise; /*** 异步高并发请求*/public function asyncRequests…

Android自定义类-写字板

目录 1. 属性文件 res/values/attrs.xml 2. 自定义控件类文件 MyClipbroad.class 3. XML布局文件中的使用 4. Java文件中的使用 该写字板可设置画笔颜色、画笔宽度、画布背景&#xff0c;具有导出图像、清空画布功能&#xff0c;可与OnTouchListener配合达到触摸绘画的效果…

速盾:cdn都能防御哪些攻击?

CDN&#xff08;Content Delivery Network&#xff09;是一种分布式的服务器网络&#xff0c;通过将资源缓存到多个服务器节点上&#xff0c;在用户请求资源时将其分发至最近的服务器节点&#xff0c;提供快速响应和高可用性。除了提供高速内容传输和优化用户体验之外&#xff…

算法课程笔记——STL键值对map

map当下标无限的数组 重点是对应关系&#xff0c;一般不修改compare 类比set 没有lowerbound&#xff0c;因为遍历是无序的 ; map不能用sort函数排序 但可用vector转化为map使用 std::set<std::pair<TKEY, mutable TVAL> > ≈ std::map<TKEY, TVAL>

使用 Cucumber框架进行BDD测试的一些项目

BehatMage 项目地址: https://github.com/MageTest/BehatMage 不过该项目在GitHub中有超过10年没有更新了。 项目介绍&#xff1a; BehatMage项目介绍 BehatMage是一个基于Behat的Magento测试框架&#xff0c;用于自动化测试Magento电子商务平台的功能和性能。Behat是一个行…