python编辑编程器_用Python制作编辑器

 2023-09-08 阅读 20 评论 0

摘要:import tkinter import tkinter as tk from tkinter import * import tkinter.filedialog import tkinter.messagebox import tkinter.scrolledtext import tkinter.colorchooser import tkinter.simpledialog # ----------------------------------------一、创建窗口-------

import tkinter

import tkinter as tk

from tkinter import *

import tkinter.filedialog

import tkinter.messagebox

import tkinter.scrolledtext

import tkinter.colorchooser

import tkinter.simpledialog

# ----------------------------------------一、创建窗口-------------------------------------------------

filename = "" # 定义空文件名

win = tk.Tk()

win["height"] = 400

win["width"] = 600

# -----------------------------------------------------------------------------------------------------

# ---------------------------------------二、功能定义区---------------------------------------------

# -----------------------------------------1.菜单栏 File-----------------------------------------------------------

textChanged = tk.IntVar(value=0) # 字符串计数器

# 1.打开

def Open():

global filename

# 1.获取字符,是否保存原来的文档

if textChanged.get():

yesno = tk.messagebox.askyesno(

title="Save or not", message="Do you want to Save?") # 询问框

if yesno == tkinter.YES:

Save()

filename = tkinter.filedialog.askopenfilename(

title="Open file", filetypes=[("Text files", "*.txt")]) # 打开路径框

# 2.打开新的文档

if filename:

txtContent.delete(0.0, tk.END) # 删除原来的文本

fp = open(filename, "rb") # 读取文本

txtContent.insert(tkinter.INSERT, "".join(

fp.read().decode('GBK'))) # 解码插入到文本编辑器

fp.close() # 关闭指针

textChanged.set(0) # 字符串置0

# 2.保存

def Save():

global filename

if not filename:

SaveAs()

elif textChanged.get():

fp = open(filename, "w") # 创建文本

fp.write(txtContent.get(0.0, tkinter.END)) # 将文本框的内容导入文件

fp.close() # 关闭

textChanged.set(0) # 计数器置0

# 3.保存到

def SaveAs():

global filename

# 创建对话框,默认对应的路径和文件名

newfilename = tkinter.filedialog.asksaveasfilename(

title="Save As", initialdir=r"c:\\", initialfile="new.txt")

# 写入文件内容

if newfilename:

fp = open(newfilename, "w")

fp.write(txtContent.get(0.0, tkinter.END))

fp.close()

filename = newfilename

textChanged.set(0)

# 4.关闭

def Close():

global filename

Save() # 保存

txtContent.delete(0.0, tkinter.END) # 区域置空

filename = "" # 文件名置空

# -------------------------------------------2.菜单栏 Edit-----------------------------------------------------------

# 1.回退

def Undo():

txtContent["undo"] = True

try:

txtContent.edit_undo()

except Exception as e:

pass

# 2.前进

def Redo():

txtContent["undo"] = True

try:

txtContent.edit_redo()

except Exception as e:

pass

# 3.复制

def Copy():

txtContent.clipboard_clear() # 清空缓冲区

txtContent.clipboard_append(txtContent.selection_get()) # 保存到缓冲区

pass

# 4.剪切

def Cut():

Copy() # 复制文本

txtContent.delete(tkinter.SEL_FIRST, tkinter.SEL_LAST) # 删除文本编译器的选中文本

# 5.粘贴

def Paste():

try:

txtContent.insert(tkinter.SEL_FIRST,

txtContent.clipboard_get()) # 获取缓冲区文本

txtContent.delete(tkinter.SEL_FIRST, tkinter.SEL_LAST) # 删除选中文本

return

except Exception as e:

pass

# 6.查找

def Search():

textToSearch = tkinter.simpledialog.askstring(

title="Search", prompt="What to search?")

start = txtContent.search(textToSearch, 0.0, tkinter.END)

if start: # 查找到时,返回yes

tkinter.messagebox.showinfo(title="Found", message="ok")

# --------------------------------------------3.菜单栏 Help-----------------------------------------------------------

# 1,关于

def About():

tkinter.messagebox.showinfo(

title="About", message="Author:Dong Fuguo") # 弹出信息框

pass

# -------------------------------------------------------------------------------------------------------------------

# ------------------------------------三、菜单栏框架----------------------------------

menu1 = tk.Menu(win)

# 菜单1 File

# ---------------------------------------------------------------------

submenu = tk.Menu(menu1, tearoff=0)

submenu.add_command(label="Open", command=Open)

submenu.add_separator()

submenu.add_command(label="Save", command=Save)

submenu.add_separator()

submenu.add_command(label="SaveAs", command=SaveAs)

submenu.add_separator()

submenu.add_command(label="Close", command=Close)

menu1.add_cascade(label="File", menu=submenu)

# -----------------------------------------------------------------------

# 菜单2 Edit

# -----------------------------------------------------------------------

submenu2 = tk.Menu(menu1, tearoff=0)

submenu2.add_command(label="Undo", command=Undo)

submenu2.add_separator()

submenu2.add_command(label="Redo", command=Redo)

submenu2.add_separator()

submenu2.add_command(label="Copy", command=Copy)

submenu2.add_separator()

submenu2.add_command(label="Cut", command=Cut)

submenu2.add_separator()

submenu2.add_command(label="Paste", command=Paste)

submenu2.add_separator()

submenu2.add_command(label="Search", command=Search)

menu1.add_cascade(label="Edit", menu=submenu2)

# ------------------------------------------------------------------------

# 菜单3 Help

# ------------------------------------------------------------------------

submenu3 = tk.Menu(menu1, tearoff=0)

submenu3.add_command(label="About", command=About)

menu1.add_cascade(label="Help", menu=submenu3)

# ------------------------------------------------------------------------

# ----------------------------------------------------------------------------------------------------------

# ------------------------------------------四、总体结构---------------------------------

# 1.菜单栏

win.config(menu=menu1)

# 2.滑动文本框

def keyPress(event):

textChanged.set(1)

txtContent = tk.scrolledtext.ScrolledText(win, wrap=tk.WORD)

txtContent.pack(fill=tk.BOTH, expand=tkinter.YES) # 创建

txtContent.bind("", keyPress) # 绑定按键识别器

win.mainloop()

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/19258.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息