python tkinter教程-事件绑定,python tkinter insert函数
本文主要详细介绍Python用tkinter实现自定义记事本的方法。本文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下,希望能帮到你。
00-1010一、思考二。代码实现III。演示和总结
目录
要完成记事本,我们首先需要考虑一个普通的记事本需要哪些功能。我们可以将这些功能按钮添加到我们的UI界面中。一般功能如下:
新建一个文本文档,打开本地文件,保存文本文档功能项:剪切、复制、粘贴等。设置好基本功能选项后,我们再来思考记事本的实现思路。
创建记事本窗口,设置记事本菜单项,为不同的菜单项配置不同的功能选项,运行记事本。
一、思考
创建记事本窗口
创建窗口时,我们要设置窗口的高度、宽度、文本区域和各种菜单,设置如下:
课堂笔记:
root=Tk()
宽度:宽度
高度:高度
文本区域:文本区域
菜单栏:
文件菜单
编辑菜单:编辑菜单
帮助菜单:帮助菜单
ScrollBat:滚动条
宽度=300
高度=300
TextArea=Text(根)
MenuBar=菜单(根)
FileMenu=Menu(MenuBar,tearoff=0)
EditMenu=Menu(MenuBar,tearoff=0)
HelpMenu=Menu(MenuBar,tearoff=0)
ScrollBar=Scrollbar(文本区域)
文件=无
设定记事本菜单项
设置好基础框架后,接下来就是填写整个框架中的各种参数和配置项,包括菜单栏中的各种功能选项、窗口标题、窗口位置等。
如果您随后向添加新函数,请在init函数中添加它们。
菜单项代码示例:
def __init__(self,**kwargs):
#添加新配置
self . file menu . add _ command(label= new ,command=self。_ _新文件)
#添加开放配置
self . file menu . add _ command(label= open ,command=self。__openFile)
#添加保存配置
self . file menu . add _ command(label= save ,command=self。_ _保存文件)
配置功能选项
接下来就是构建不同的功能函数,实现每个小功能。这里不需要编写独立的功能函数代码,只需要使用tkinter中的函数进行重新封装即可。
配置示例代码:
def __newFile(self):
新文件:默认为未命名的文件。
Self.root.title(未命名文件)
self.file=无
自我。TextArea.delete(1.0,END)
完整代码如下
导入tkinter
导入操作系统
来自tkinter import *
从tkinter.messagebox导入*
从tkinter.filedialog对话框导入*
课堂笔记:
root=Tk()
宽度:宽度
高度:高度
文本区域:文本区域
菜单栏:
文件菜单
编辑菜单:编辑菜单
HelpMenu:帮助菜单
ScrollBat:滚动条
Width = 300
Height = 300
TextArea = Text(root)
MenuBar = Menu(root)
FileMenu = Menu(MenuBar, tearoff=0)
EditMenu = Menu(MenuBar, tearoff=0)
HelpMenu = Menu(MenuBar, tearoff=0)
ScrollBar = Scrollbar(TextArea)
file = None
def __init__(self, **kwargs):
# 设置文本框的大小
try:
self.Width = kwargs[width]
except KeyError:
pass
try:
self.Height = kwargs[height]
except KeyError:
pass
# 设置窗口标题
self.root.title("Python记事本")
# 将窗口居中显示
screenWidth = self.root.winfo_screenwidth()
screenHeight = self.root.winfo_screenheight()
left = (screenWidth / 2) - (self.Width / 2)
top = (screenHeight / 2) - (self.Height / 2)
self.root.geometry(%dx%d+%d+%d %
(self.Width, self.Height, left, top))
# 文本区域大小调整
self.root.grid_rowconfigure(0, weight=1)
self.root.grid_columnconfigure(0, weight=1)
# Add controls (widget)
self.TextArea.grid(sticky=N + E + S + W)
# 增加新建配置
self.FileMenu.add_command(label="新建", command=self.__newFile)
# 增加打开配置
self.FileMenu.add_command(label="打开", command=self.__openFile)
# 增加保存配置
self.FileMenu.add_command(label="保存", command=self.__saveFile)
# 增加退出配置
self.FileMenu.add_separator()
self.FileMenu.add_command(label="退出", command=self.__quitApplication)
# 菜单中设置文件按钮
self.MenuBar.add_cascade(label="文件", menu=self.FileMenu)
# 增加剪切功能
self.EditMenu.add_command(label="剪切", command=self.__cut)
# 增加复制功能
self.EditMenu.add_command(label="复制", command=self.__copy)
# 增加粘贴功能
self.EditMenu.add_command(label="粘贴", command=self.__paste)
# 菜单中设置编辑按钮
self.MenuBar.add_cascade(label="编辑", menu=self.EditMenu)
# 增加关于记事本选项
self.HelpMenu.add_command(label="关于记事本", command=self.__showAbout)
# 菜单中射者帮助按钮
self.MenuBar.add_cascade(label="帮助", menu=self.HelpMenu)
self.root.config(menu=self.MenuBar)
self.ScrollBar.pack(side=RIGHT, fill=Y)
# 滚动条根据内容进行调整
self.ScrollBar.config(command=self.TextArea.yview)
self.TextArea.config(yscrollcommand=self.ScrollBar.set)
def __quitApplication(self):
用于退出程序(关了就消失)
self.root.destroy()
def __showAbout(self):
添加帮助菜单中的信息
showinfo("关于记事本", "来自:二哥不像程序员")
def __openFile(self):
打开文件
self.file = askopenfilename(defaultextension=".txt",
filetypes=[("All Files", "*.*"),
("Text Documents", "*.txt")])
if self.file == "":
self.file = None
else:
self.root.title(os.path.basename(self.file))
self.TextArea.delete(1.0, END)
file = open(self.file, "r")
self.TextArea.insert(1.0, file.read())
file.close()
def __newFile(self):
新文件:默认是一个未命名文件
self.root.title("未命名文件")
self.file = None
self.TextArea.delete(1.0, END)
def __saveFile(self):
用于保存文件,不存在的文件进行新建,存在的文件在原文件基础上覆盖保存
if self.file == None:
self.file = asksaveasfilename(initialfile=Untitled.txt,
defaultextension=".txt",
filetypes=[("All Files", "*.*"),
("Text Documents",
"*.txt")])
if self.file == "":
self.file = None
else:
file = open(self.file, "w")
file.write(self.TextArea.get(1.0, END))
file.close()
# 更改title名字为文件名
self.root.title(os.path.basename(self.file))
else:
file = open(self.file, "w")
file.write(self.TextArea.get(1.0, END))
file.close()
# 添加功能项
def __cut(self):
self.TextArea.event_generate("<<Cut>>")
def __copy(self):
self.TextArea.event_generate("<<Copy>>")
def __paste(self):
self.TextArea.event_generate("<<Paste>>")
def run(self):
# 使用mainloop()使得窗口一直存在
self.root.mainloop()
notepad = Notepad(width=600, height=400)
notepad.run()
三、展示
菜单栏根据不同的系统会有不同的位置展示,mac嵌入在左上角,win在窗口内部进行嵌入。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT软件开发工作室的更多内容!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。