当前位置:首页>python>18个爆火的Python实战项目,附源码资源+效果展示

18个爆火的Python实战项目,附源码资源+效果展示

  • 2026-10-11 06:37:48
18个爆火的Python实战项目,附源码资源+效果展示

1 python项目练习一:即时标记

这是《python基础教程》后面的实践,照着写写,一方面是来熟悉python的代码方式,另一方面是练习使用python中的基本的以及非基本的语法,做到熟能生巧。

这个项目一开始比较简单,不过重构之后就有些复杂了,但是更灵活了。

按照书上所说,重构之后的程序,分为四个模块:处理程序模块,过滤器模块,规则(其实应该是处理规则),语法分析器。

先来说处理程序模块,这个模块的作用有两个,一个是提供那些固定的html标记的输出(每一个标记都有start和end),另一个是对这个标记输出的开始和结束提供了一个友好的访问接口。来看下程序handlers.py:

这个程序堪称是整个“项目”的基石所在:提供了标签的输出,以及字符串的替换。理解起来也比较简单。

再来看第二个模块“过滤器”,这个模块更为简单,其实就是一个正则表达式的字符串。相关代码如下:

这就是三个过滤器了,分别是:强调牌过滤器(用×号标出的),url牌过滤器,email牌过滤器。熟悉正则表达式的同学理解起来是没有压力的。

再来看第三个模块“规则”,这个模块,抛开那祖父类不说,其他类应该有的两个方法是condition和action,前者是用来判断读进来的字符串是不是符合自家规则,后者是用来执行操作的,所谓的执行操作就是指调用“处理程序模块”,输出前标签、内容、后标签。来看下这个模块的代码,其实这个里面几个类的关系,画到类图里面看会比较清晰。rules.py:

这个模块里面的处理思路是,遍历客户端(也就是程序执行的入口)给插进去的所有的规则和过滤器,来处理读进来的文本。

有一个细节的地方也要说一下,其实是和前面写的呼应一下,就是在遍历规则的时候通过调用condition这个东西来判断是否符合当前规则。

我觉得这个程序很像是命令行模式,有空可以复习一下该模式,以保持记忆网节点的牢固性。

最后说一下我以为的这个程序的用途:

1、用来做代码高亮分析,如果改写成js版的话,可以做一个在线代码编辑器。

2、可以用来学习,供我写博文用。

还有其他的思路,可以留下您的真知灼见。

补充一个类图,很简陋,但是应该能说明之间的关系。另外我还是建议如果看代码捋不清关系最好自己画图,自己画图才能熟悉整个结构。

2 猜字游戏

在这个游戏中,你必须一个字母一个字母的猜出秘密单词。如果你猜错了一个字母,你将丢掉一条命。正如游戏名那样,你需要仔细选择字母,因为你的生命数量非常有限

import randomdef guess_word_game():    words = ["apple", "banana", "cherry", "grape", "orange"]    target_word = random.choice(words)    guessed_letters = []    attempts = 6    print("欢迎来到猜字游戏!")    print("提示:这个单词是一种水果。")    print("_ " * len(target_word))    while attempts > 0:        guess = input("请输入一个字母: ").lower()        if len(guess)!= 1 or not guess.isalpha():            print("请输入一个有效的字母。")            continue        if guess in guessed_letters:            print("你已经猜过这个字母了。")            continue        guessed_letters.append(guess)        if guess in target_word:            print("正确!")            display_word = ""            for letter in target_word:                if letter in guessed_letters:                    display_word += letter + " "                else:                    display_word += "_ "            print(display_word)            if "_" not in display_word:                print(f"恭喜你猜对了!答案是{target_word}。")                break        else:            attempts -= 1            print(f"错误!你还有{attempts}次机会。")    if attempts == 0:        print(f"游戏结束。答案是{target_word}。")

你可以这样调用这个游戏:

if __name__ == "__main__":    guess_word_game()
这个猜字游戏从给定的水果单词列表中随机选择一个单词,让玩家通过猜测单个字母来猜出这个单词。
玩家有 6 次错误猜测的机会。每次猜测后,游戏会显示已猜对的字母在单词中的位置,以及还剩下多少次机会。
如果玩家猜对了所有字母,游戏会显示祝贺消息并结束;如果玩家用完了所有机会,游戏会显示答案并结束。

3 骰子模拟器

可以通过选择1到6之间的随机整数,来完成骰子模拟。

import random设置最大值和最小值min_val =1max val = 6# 是否继续roll again = "yes"# 循环while roll _again == "yes" or roll _again == "y":print(“开始掷骰子”)print("般子数值是:)# 第一轮print(random.randint(min val, max val))# 第二轮print(random,randint(min_val, max_val))# 是否继续roll again = input("是否继续掷骰子?(是的话,输入yes或者y)")

④ 二维码

二维码是用于将数据编码和解码为机器可读的方法。包含一个白色背景上的黑色方块网格,可以被任何成像设备(如手机)读取

import pyqrcode设置二维码信息s= "https://www.baidu.com"# 生成二维码url = pyqrcode.create(s)# 保存二维码url,svg("baidu.svg",scale=8)

⑤ 语言检测

当你需要处理包含不同语言数据,且数据非常大的时候,语言检测就派上用场了。使用Python中的langdetect包,可以在几行代码内检测超过55种不同的语言。

from langdetect import detectext = input(“输入信息:")

⑥ 加密和解密

密码术意味着更改消息的文本,以便不知道你秘密的人永远不会理解你的消息。下面就来创建一个GUI应用程序,使用Python进行加密和解密在这里,我们需要编写使用无限循环的代码,代码将不断询问用户是否要加密或解

def encrypt(text, shift):    encrypted_text = ""    for char in text:        if char.isalpha():            if char.islower():                encrypted_char = chr((ord(char) - ord('a') + shift) % 26 + ord('a'))            else:                encrypted_char = chr((ord(char) - ord('A') + shift) % 26 + ord('A'))            encrypted_text += encrypted_char        else:            encrypted_text += char    return encrypted_textdef decrypt(text, shift):    return encrypt(text, 26 - shift)示例用法original_text = "Hello, World!"shift_value = 3encrypted = encrypt(original_text, shift_value)print(f"加密后的文本:{encrypted}")decrypted = decrypt(encrypted, shift_value)print(f"解密后的文本:{decrypted}")
在这个例子中,encrypt函数接受一个文本和一个偏移量作为参数,对文本中的字母进行加密。
如果字符是小写字母,将其转换为对应的加密后的小写字母;
如果是大写字母,进行类似的处理。非字母字符保持不变。
decrypt函数通过反向偏移量来解密文本,实际上就是再次调用加密函数,但使用反向的偏移量。

⑦ URL缩短

短网址由于易于记忆和输入,因此在数字营销领域非常受欢迎。这里给大家介绍一下,如何使用Python创建URL缩短器。

from flask import Flask, render_template, requestimport pyshortenersapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def index():    short_url = None    if request.method == 'POST':        long_url = request.form['long_url']        s = pyshorteners.Shortener()        short_url = s.tinyurl.short(long_url)    return render_template('index.html', short_url=short_url)if __name__ == '__main__':    app.run(debug=True)

同时,你需要一个名为index.html的模板文件,内容如下:

<!DOCTYPE html><htmllang="en"><head>    <metacharset="UTF-8">    <title>URL Shortener</title></head><body>    <h1>URL Shortener</h1>    <formmethod="post">        <labelfor="long_url">输入长 URL:</label>        <inputtype="text"id="long_url"name="long_url">        <inputtype="submit"value="缩短">    </form>    {% if short_url %}    <p>缩短后的 URL:{{ short_url }}</p>    {% endif %}</body></html>

这个程序创建了一个简单的 Web 应用,用户在表单中输入一个长 URL,点击 “缩短” 按钮后,程序使用pyshorteners库将长 URL 缩短,并在页面上显示缩短后的 URL。

⑧ 音乐播放器

音乐播放器,可让你快速轻松地管理和收听所有音乐文件。应该不少小伙伴都使用过,网易云音乐、QQ音乐、酷狗音乐等,这里小F将使用Pygame和Tkinter,来创建一个音乐播放器

import tkinter as tkimport pygameclass MusicPlayer:    def __init__(self):        self.root = tk.Tk()        self.root.title("音乐播放器")        self.song_list = []        self.current_song_index = 0        self.load_button = tk.Button(self.root, text="加载音乐", command=self.load_songs)        self.load_button.pack()        self.play_button = tk.Button(self.root, text="播放", command=self.play_song)        self.play_button.pack()        self.pause_button = tk.Button(self.root, text="暂停", command=self.pause_song)        self.pause_button.pack()        self.next_button = tk.Button(self.root, text="下一首", command=self.next_song)        self.next_button.pack()        self.prev_button = tk.Button(self.root, text="上一首", command=self.prev_song)        self.prev_button.pack()        pygame.mixer.init()    def load_songs(self):        file_paths = tk.filedialog.askopenfilenames(filetypes=[("音频文件", "*.mp3;*.wav")])        self.song_list = list(file_paths)    def play_song(self):        if self.song_list:            pygame.mixer.music.load(self.song_list[self.current_song_index])            pygame.mixer.music.play()    def pause_song(self):        pygame.mixer.music.pause()    def next_song(self):        if self.song_list:            self.current_song_index = (self.current_song_index + 1) % len(self.song_list)            self.play_song()    def prev_song(self):        if self.song_list:            self.current_song_index = (self.current_song_index - 1) % len(self.song_list)            self.play_song()    def run(self):        self.root.mainloop()if __name__ == "__main__":    player = MusicPlayer()    player.run()
这个音乐播放器可以加载多个音频文件,并提供播放、暂停、上一首和下一首的功能。
它使用tkinter创建了用户界面,使用pygame库来播放音乐。
请注意,在运行代码之前,请确保已经安装了pygame库。可以使用pip install pygame来安装。
选择音乐文件所在的文件夹,点击播放,即可听见音乐。

⑨ 生命游戏

生命游戏由英国数学家约翰·H·康威设计的,是一种类似于生物社会的兴衰和交替的游戏。
游戏使用无限大小的矩形网格,其中每个网格都是空的或被有机体占据。被占用的细胞是活的,而空的细胞是死的。
游戏在特定时期内进行,每一轮都会根据当前配置中生物体的排列创建一个新的世
下一代网格的状态,是通过将以下四个基本规则应用于当前配置的每个网格来确定的:
如果一个细胞还活着并且有两个或三个活着的邻居,那么该细胞在下一代中仍然活着;
一个没有活邻居或只有一个活邻居的活细胞会在下一代死于孤立,有四个或更多活邻居的活细胞会因下一代人口过剩而死亡
board = [[1, 0, 0], [1, 0, 0], [1, 0, 0]]邻居数组为给定的单元格找到8个相邻的单元格neighbors = [(1, 0), (1, -1), (0, -1), (-1, -1), (-1, 0), (-1, 1), (0, 1), (1, 1)]rows = len(board)cols = len(board[0])# 创建一个原始板的副本copy_board = [[board[row][col] for col inrange(cols)] for row inrange(rows)]# 逐个单元地迭代for row inrange(rows):for col inrange(cols):# 对于每个单元计算邻居的数量        live_neighbors = 0for neighbor in neighbors:            r = (row + neighbor[0])            c = (col + neighbor[1])# 检查相邻细胞的有效性,以及它是否原来是一个活细胞# 评估是针对副本进行的,因为它永远不会更新。if (r < rows and r >= 0) and (c < cols and c >= 0) and (copy_board[r][c] == 1):                live_neighbors += 1# 规则1或规则3if copy_board[row][col] == 1and (live_neighbors < 2or live_neighbors > 3):            board[row][col] = 0# 规则4if copy_board[row][col] == 0and live_neighbors == 3:            board[row][col] = 1print(board)

结果如下:

#输入board = [[1, 0, 0], [1, 0, 0], [1, 0, 0]]输出board = [[0, 0, 0], [1, 1, 0], [0, 0, 0]]

⑩5Turtle模块提供了在二维平面上移动的环境。

Turtle可以实现位置、航向和各种可能的状态和动作。

import turtle as turoo = tu.Turtle()  

创建对象wn = tu.Screen()  # 屏幕对象wn.bgcolor("black")  # 屏幕背景wn.title("分形树")roo.left(90)  # 移动roo.speed(20)  # 速度defdraw(l):  # 以长度'l'作为参数的递归函数if l < 10:returnelse:        roo.pensize(2)  # 设置画笔大小        roo.pencolor("yellow")  # 画笔颜色        roo.forward(l)  # 朝向        roo.left(30)  # 移动        draw(3 * l / 4)  # 绘制        roo.right(60)  # 移动        draw(3 * l / 4)  # 绘制        roo.left(30)  # 移动        roo.pensize(2)        roo.backward(l)  # 返回初始位置draw(20)  # 绘制20次roo.right(90)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(2)        roo.pencolor("magenta")  # magenta        roo.forward(l)        roo.left(30)        draw(3 * l / 4)        roo.right(60)        draw(3 * l / 4)        roo.left(30)        roo.pensize(2)        roo.backward(l)draw(20)roo.left(270)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(2)        roo.pencolor("red")  # red        roo.forward(l)        roo.left(30)        draw(3 * l / 4)        roo.right(60)        draw(3 * l / 4)        roo.left(30)        roo.pensize(2)        roo.backward(l)draw(20)roo.right(90)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(2)        roo.pencolor('#FFF8DC')  # white        roo.forward(l)        roo.left(30)        draw(3 * l / 4)        roo.right(60)        draw(3 * l / 4)        roo.left(30)        roo.pensize(2)        roo.backward(l)draw(20)########################################################defdraw(l):if (l < 10):returnelse:        roo.pensize(3)        roo.pencolor("lightgreen")  # lightgreen        roo.forward(l)        roo.left(30)        draw(4 * l / 5)        roo.right(60)        draw(4 * l / 5)        roo.left(30)        roo.pensize(3)        roo.backward(l)draw(40)roo.right(90)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(3)        roo.pencolor("red")  # red        roo.forward(l)        roo.left(30)        draw(4 * l / 5)        roo.right(60)        draw(4 * l / 5)        roo.left(30)        roo.pensize(3)        roo.backward(l)draw(40)roo.left(270)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(3)        roo.pencolor("yellow")  # yellow        roo.forward(l)        roo.left(30)        draw(4 * l / 5)        roo.right(60)        draw(4 * l / 5)        roo.left(30)        roo.pensize(3)        roo.backward(l)draw(40)roo.right(90)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(3)        roo.pencolor('#FFF8DC')  # white        roo.forward(l)        roo.left(30)        draw(4 * l / 5)        roo.right(60)        draw(4 * l / 5)        roo.left(30)        roo.pensize(3)        roo.backward(l)draw(40)########################################################defdraw(l):if (l < 10):returnelse:        roo.pensize(2)        roo.pencolor("cyan")  # cyan        roo.forward(l)        roo.left(30)        draw(6 * l / 7)        roo.right(60)        draw(6 * l / 7)        roo.left(30)        roo.pensize(2)        roo.backward(l)draw(60)roo.right(90)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(2)        roo.pencolor("yellow")  # yellow        roo.forward(l)        roo.left(30)        draw(6 * l / 7)        roo.right(60)        draw(6 * l / 7)        roo.left(30)        roo.pensize(2)        roo.backward(l)draw(60)roo.left(270)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(2)        roo.pencolor("magenta")  # magenta        roo.forward(l)        roo.left(30)        draw(6 * l / 7)        roo.right(60)        draw(6 * l / 7)        roo.left(30)        roo.pensize(2)        roo.backward(ldraw(60)roo.right(90)roo.speed(2000)# recursiondefdraw(l):if (l < 10):returnelse:        roo.pensize(2)        roo.pencolor('#FFF8DC')  # white        roo.forward(l)        roo.left(30)        draw(6 * l / 7)        roo.right(60)        draw(6 * l / 7)        roo.left(30)        roo.pensize(2)        roo.backward(l)draw(60)wn.exitonclick()

绘制时间较长,结果如下,挺好看的。

⑪ 计算器

Kivy是一个免费的开源Python库,可以快速轻松地开发高度交互的跨平台应用程序

import tkinter as tkclass Calculator:    def __init__(self):        self.root = tk.Tk()        self.root.title("简单计算器")        self.expression = ""        self.display_var = tk.StringVar()        self.display = tk.Entry(self.root, textvariable=self.display_var, font=('Helvetica', 20))        self.display.grid(row=0, column=0, columnspan=4)        buttons = [            '7', '8', '9', '/',            '4', '5', '6', '*',            '1', '2', '3', '-',            '0', '.', '=', '+',            'C' ]        row_val = 1        col_val = 0        for button in buttons:tk.Button(self.root, text=button, padx=20, pady=20, command=lambda b=button: self.button_click(b)).grid(row=row_val, column=col_val)            col_val += 1            if col_val > 3:                col_val = 0                row_val += 1def button_click(self, button):        if button == '=':            try:                result = str(eval(self.expression))                self.display_var.set(result)                self.expression = result            except:                self.display_var.set("错误")                self.expression = ""        elif button == 'C':            self.display_var.set("")            self.expression = ""        else:            self.expression += button            self.display_var.set(self.expression)    def run(self):        self.root.mainloop()if __name__ == "__main__":    calculator = Calculator()    calculator.run()

这个计算器可以进行基本的加、减、乘、除运算,并且有清除(C)和等于(=)按钮。

它使用 Tkinter 创建了一个简单的图形用户界面,包含一个显示区域和多个按钮。

当用户点击按钮时,相应的操作会被执行,结果会显示在显示区域中。

运行代码,出现一个计算器,非常好用!

⑫ 猜数游戏

猜数字游戏目的是猜测出程序想出的数字,基本逻辑:程序随机选择1到100之间的一个数字或任何其他数字组合,然后它会要求玩家输入它的建议。然后它会检查这个数字是否与计算机随机生成的数字相同;如果是,则玩家获胜

import random创建随机数n=random.randrange(1,100)# 获取输入guess =int(input("输入任意数值:"))while n!= guess:# 判断是否正确# 小于if guess < n:print("太小了")guess =int(input("再次输入数值:“))# 大于elif guess > n:print("太大了!")guess=int(input("再次输入数值:“))else:break

运行代码,结果展示:

⑬ 图像转换器

我们知道有大量的图像文件格式可用于存储图形数据,最流行的便是JPG和PNG。使用Python中的Tkinter库和PIL库,创建一个将PNG图像转换为JPG的应用程序。

from PIL import Imageimport osdef convert_image(input_path, output_path, output_format):    try:        img = Image.open(input_path)        img.save(output_path, format=output_format)        print(f"成功将 {input_path} 转换为 {output_path}")    except Exception as e:        print(f"转换失败:{e}")示例用法input_image_path = "input.jpg"output_image_path = "output.png"output_format = "PNG"convert_image(input_image_path, output_image_path, output_format)
在这个示例中,convert_image函数接受输入图像路径、输出图像路径和目标格式作为参数。
它使用Pillow库打开输入图像,然后将其保存为指定的格式。
你可以根据实际情况修改输入和输出路径以及目标格式。
请注意,确保已经安装了Pillow库,可以使用pip install Pillow进行安装。
运行代码,选择图片,点击转换按钮,即可完成图像格式变换。

⑭ 重量转换器

重量换算是指单位值乘以标准换算值,使用Python中的Tkinter库创建一个重量转换器应用程序

def convert_weight(value, from_unit, to_unit):    units = {        "gram": 1,        "kilogram": 1000,        "pound": 453.592,        "ounce": 28.3495    }    if from_unit not in units or to_unit not in units:        return "Invalid units"    return value * units[from_unit] / units[to_unit]示例用法weight = 100print(f"{weight} grams is {convert_weight(weight, 'gram', 'kilogram')} kilograms.")print(f"{weight} grams is {convert_weight(weight, 'gram', 'pound')} pounds.")print(f"{weight} grams is {convert_weight(weight, 'gram', 'ounce')} ounces.")

这个重量转换器函数接受三个参数:

要转换的数值、原始单位和目标单位。

它使用一个字典来存储不同单位之间的换算比例,然后根据给定的数值和单位进行换算。

你可以根据实际需求进行扩展和改进,比如添加用户输入功能,以便在运行时获取数值和单位。

运行代码,出现界面,输入数值,点击转换。

⑮ 年龄和性别检测

使用Python编程语言带你完成使用机器学习进行年龄和性别检测的任务
首先需要编写用于检测人脸的代码,因为如果没有人脸检测,我们将无法进一步完成年龄和性别预测的任务。
下一步是预测图像中人的性别。在这里,我将性别网络加载到内存中,并将检测的人脸通过网络传输,用于性别检测任务
下一个任务是预测图像中人类的年龄。这里我将加载网络并使用前向传递来获取输出。由于网络架构与性别网络相似,我们可以充分利用所有输出来获得任务的预期
以下是一个使用 Python 进行年龄和性别检测的示例代码,这里使用了第三方库face_recognition和opencv-python,请确保在运行代码前安装好这些库。
import face_recognitionimport cv2import numpy as npimport datetimedef detect_age_gender(frame):    face_locations = face_recognition.face_locations(frame)    for top, right, bottom, left in face_locations:        face_image = frame[top:bottom, left:right]使用深度学习模型进行性别和年龄预测        # 这里使用示例值,实际应用中需使用专业模型进行预测        gender = np.random.choice(['Male', 'Female'])        age = np.random.randint(18, 60)        cv2.rectangle(frame, (left, top), (right, bottom), (0, 255, 0), 2)        cv2.putText(frame, f'{gender}, {age} years old', (left, top - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)    return framecap = cv2.VideoCapture(0)while True:    ret, frame = cap.read()    if ret:        result_frame = detect_age_gender(frame)        cv2.imshow('Age and Gender Detection', result_frame)    if cv2.waitKey(1) & 0xFF == ord('q'):        breakcap.release()cv2.destroyAllWindows()

⑯ 人脸检测

构建一个检测人脸的程序是开始机器学习计算机视觉任务的好方法,使用Python的OpenCV库进行人脸检测的任务。

import cv2face cascade =cv2.CascadeClassifier("face detector.xml')img = cv2.imread('imagejpg’)faces =face cascade.detectMultiscale(img, 1.1,10)for (x, y, w, h) in faces:cv2.rectangle(img, (x, y). (x+w, y+h). (255, 0, 0). 2)cv2.imwrite("face detected.png", img)print('Successfully saved')

⑰ 铅笔素描

使用不到20行的Python代码将图像转换为铅笔素描

import cv2image = cv2.imread("dogjpg")cv2.imshow("Dog", image)cv2.waitKey(0)gray_image = cv2.cvtColor(image, cV2.COLOR BGR2GRAY)cv2.imshow("New Dog", gray _image)cv2.waitKey(0)inverted image =255 -gray _imagecv2.imshow("Inverted",inverted image)cv2.waitKey()blurred = cv2.GaussianBlur(inverted image, (21, 21), 0)inverted blurred= 255 -blurredpencil sketch =cv2.divide(gray image, inverted blurred, scale=256.0)cv2.imshow("Sketch",pencil sketch)cv2.waitKey(0)cv2.imshow("original image", image)cv2.imshow("pencil sketch", pencil sketch)

结果如下:

⑱ 文本编辑器

使用Python创建一个文本编辑器 GU,它可以创建、打开、编辑和保存文本文件。所有小部件的排列方式应使按钮小部件位于窗口布局的左侧,而文本框小部件位于

import tkinter as tkfrom tkinter import filedialogclass TextEditor:    def __init__(self, root):        self.root = root        self.root.title("简单文本编辑器")        self.text_area = tk.Text(root)        self.text_area.pack(fill=tk.BOTH, expand=True)        self.menu_bar = tk.Menu(root)        self.file_menu = tk.Menu(self.menu_bar, tearoff=0)        self.file_menu.add_command(label="打开", command=self.open_file)        self.file_menu.add_command(label="保存", command=self.save_file)        self.menu_bar.add_cascade(label="文件", menu=self.file_menu)        root.config(menu=self.menu_bar)    def open_file(self):        file_path = filedialog.askopenfilename()        if file_path:            with open(file_path, 'r') as file:                content = file.read()                self.text_area.delete(1.0, tk.END)                self.text_area.insert(tk.END, content)    def save_file(self):        file_path = filedialog.asksaveasfilename(defaultextension=".txt")        if file_path:            content = self.text_area.get(1.0, tk.END)            with open(file_path, 'w') as file:                file.write(content)if __name__ == "__main__":    root = tk.Tk()    editor = TextEditor(root)    root.mainloop()

这个文本编辑器具有打开和保存文件的功能。它使用 Tkinter 的菜单和文本区域来实现基本的文本编辑操作。

结果如下

总结

最后希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利

最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。
领取方式:看下图

最新文章

随机文章