2022年 11月 5日

用python3写一个简单的文本编辑器吧


title: “TextEditorPython”
date: 2020-11-20T19:31:05+08:00
lastmod: 2020-11-20T19:31:05+08:00
keywords: [‘TextEditor’, ‘Python’, ‘tkinter’]
description: “用python3写一个简单的文本编辑器”
tags: [‘TextEditor’]
categories: [Python]
author: “筱氚”

Intro

用python3写一个简单的文本编辑器吧,参考Create a Simple Python Text Editor!By PumpkinSmasher,原文太久远,不适合py3,下面对py3进行了一丢更改

开发环境

Deepin 20 , python3 3.7.3

效果预览

照片好大。。
在这里插入图片描述

开动啦

安装tkinter

My Os: Deepin 20 , python3 3.7.3
这是我开发环境py3安装tkinter和测试的过程,参考给python安装tkinter模块(及各种问题的解决:如 ModuleNotFoundError: No module named ‘_tkinter’)

$ sudo apt update
$ sudo apt install python3-tk
  • 1
  • 2

测试安装是否成功,出现tkinter窗体说明安装成功

$ python3 -m tkinter
  • 1

显示一个窗口

import tkinter as tk
root = tk.Tk()
root.mainloop()
  • 1
  • 2
  • 3

这个窗口有点小,现在还不能输入文字

添加文本框

import tkinter as tk
root = tk.Tk()
text = tk.Text(root)
text.grid()
root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5

现在窗口可以编辑文字啦,下面添加保存按钮吧

添加按钮

import tkinter as tk

root = tk.Tk()
text = tk.Text(root)
text.grid()
button = tk.Button(root, text="Save")
button.grid()
root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这个时候按钮还没有添加功能,下面给它添加保存功能吧。

为按钮添加保存功能

import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
text = tk.Text(root)
text.grid()


def savetext():
    global text
    data = text.get("1.0", "end-1c")
    savelocation = filedialog.asksaveasfilename()
    if(savelocation):
        with open(savelocation, 'w+', encoding='utf-8') as f:
            f.write(data)
    else:
        print("empty filepath")


button = tk.Button(root, text="Save", command=savetext)
button.grid()
root.mainloop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

总结

这个文本编辑器功能还有点简陋,没有字体选择呀、打开文件呀。后面有机会再写,后续代码都放在Github

FAQ

  1. sys.python_version – AttributeError: module ‘sys’ has no attribute ‘python_version’

将第一段代码修改为如下

import sys

pv = sys.version[0]
if pv == 2:
    from Tkinter import *
else:
    from tkinter import *
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. from tkinter import * – ModuleNotFoundError: No module named ‘tkinter’

没有正确安装tkinter模块,请查看安装tkinter部分

References

  • Create a Simple Python Text Editor!By PumpkinSmasher
  • tkinter — Python interface to Tcl/Tk¶
  • 给python安装tkinter模块(及各种问题的解决:如 ModuleNotFoundError: No module named ‘_tkinter’)
  • AttributeError: module ‘tkinter’ has no attribute ‘filedialog’的解决之道