新闻动态

教你如何使用Python Tkinter库制作记事本

发布日期:2022-03-14 09:07 | 文章来源:gibhub

Tkinter库制作记事本

现在为了创建这个记事本,你的系统中应该已经安装了 Python 3 和 Tkinter。您可以根据系统要求下载合适的python 包。成功安装 python 后,您需要安装 Tkinter(一个 Python 的 GUI 包)。

使用此命令安装 Tkinter :

pip install python-tk

导入 Tkinter :

import tkinter
import os
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *

注意:messagebox用于在称为记事本的白框中写入消息,filedialog用于在您从系统中的任何位置打开文件或将文件保存在特定位置或位置时出现的对话框。

添加菜单:

# Add controls(widget) 
  
self.__thisTextArea.grid(sticky = N + E + S + W) 
  
# To open new file 
self.__thisFileMenu.add_command(label = "New", 
 command = self.__newFile) 
  
# To open a already existing file 
self.__thisFileMenu.add_command(label = "Open", 
 command = self.__openFile) 
  
# To save current file 
self.__thisFileMenu.add_command(label = "Save", 
 command = self.__saveFile) 
  
# To create a line in the dialog 
self.__thisFileMenu.add_separator() 
  
# To terminate 
self.__thisFileMenu.add_command(label = "Exit", 
 command = self.__quitApplication) 
self.__thisMenuBar.add_cascade(label = "File", 
menu = self.__thisFileMenu) 
  
# To give a feature of cut 
self.__thisEditMenu.add_command(label = "Cut", 
 command = self.__cut) 
  
# To give a feature of copy 
self.__thisEditMenu.add_command(label = "Copy", 
 command = self.__copy) 
  
# To give a feature of paste 
self.__thisEditMenu.add_command(label = "Paste", 
 command = self.__paste) 
  
# To give a feature of editing 
self.__thisMenuBar.add_cascade(label = "Edit", 
menu = self.__thisEditMenu) 
  
# To create a feature of description of the notepad 
self.__thisHelpMenu.add_command(label = "About Notepad", 
 command = self.__showAbout) 
self.__thisMenuBar.add_cascade(label = "Help", 
menu = self.__thisHelpMenu) 
  
self.__root.config(menu = self.__thisMenuBar) 
  
self.__thisScrollBar.pack(side = RIGHT, fill = Y) 
  
# Scrollbar will adjust automatically 
# according to the content 
self.__thisScrollBar.config(command = self.__thisTextArea.yview) 
self.__thisTextArea.config(yscrollcommand = self.__thisScrollBar.set) 

使用此代码,我们将在记事本的窗口中添加菜单,并向其中添加复制、粘贴、保存等内容。

添加功能:

def __quitApplication(self): 
 self.__root.destroy() 
 # exit() 
  
def __showAbout(self): 
 showinfo("Notepad", "Mrinal Verma") 
  
def __openFile(self): 
 
 self.__file = askopenfilename(defaultextension=".txt", 
filetypes=[("All Files","*.*"), 
 ("Text Documents","*.txt")]) 
  
 if self.__file == "": 
  
  # no file to open 
  self.__file = None
 else: 
  # try to open the file 
  # set the window title 
  self.__root.title(os.path.basename(self.__file) + " - Notepad") 
  self.__thisTextArea.delete(1.0,END) 
  
  file = open(self.__file,"r") 
  
  self.__thisTextArea.insert(1.0,file.read()) 
  
  file.close() 
  
 
def __newFile(self): 
 self.__root.title("Untitled - Notepad") 
 self.__file = None
 self.__thisTextArea.delete(1.0,END) 
  
def __saveFile(self): 
  
 if self.__file == None: 
  #save as new file 
  self.__file = asksaveasfilename(initialfile='Untitled.txt', 
defaultextension=".txt", 
filetypes=[("All Files","*.*"), 
 ("Text Documents","*.txt")]) 
  
  if self.__file == "": 
self.__file = None
  else: 
  
# try to save the file 
file = open(self.__file,"w") 
file.write(self.__thisTextArea.get(1.0,END)) 
file.close() 
# change the window title 
self.__root.title(os.path.basename(self.__file) + " - Notepad") 

  
 else: 
  file = open(self.__file,"w") 
  file.write(self.__thisTextArea.get(1.0,END)) 
  file.close() 
  
def __cut(self): 
 self.__thisTextArea.event_generate("<<Cut>>") 
  
def __copy(self): 
 self.__thisTextArea.event_generate("<<Copy>>") 
  
def __paste(self): 
 self.__thisTextArea.event_generate("<<Paste>>") 

在这里,我们添加了记事本中所需的所有功能,您也可以添加其他功能,例如字体大小、字体颜色、粗体、下划线等。

合并后的主要代码:

import tkinter
import os
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *
 
 
class Notepad:
 __root = Tk()
 
 # default window width and height
 __thisWidth = 300
 __thisHeight = 300
 __thisTextArea = Text(__root)
 __thisMenuBar = Menu(__root)
 __thisFileMenu = Menu(__thisMenuBar, tearoff=0)
 __thisEditMenu = Menu(__thisMenuBar, tearoff=0)
 __thisHelpMenu = Menu(__thisMenuBar, tearoff=0)
 
 # To add scrollbar
 __thisScrollBar = Scrollbar(__thisTextArea)
 __file = None
 
 def __init__(self, **kwargs):
 
  # Set icon
  try:
self.__root.wm_iconbitmap("Notepad.ico")
  except:
pass
 
  # Set window size (the default is 300x300)
 
  try:
self.__thisWidth = kwargs['width']
  except KeyError:
pass
 
  try:
self.__thisHeight = kwargs['height']
  except KeyError:
pass
 
  # Set the window text
  self.__root.title("Untitled - Notepad")
 
  # Center the window
  screenWidth = self.__root.winfo_screenwidth()
  screenHeight = self.__root.winfo_screenheight()
 
  # For left-alling
  left = (screenWidth / 2) - (self.__thisWidth / 2)
 
  # For right-allign
  top = (screenHeight / 2) - (self.__thisHeight / 2)
 
  # For top and bottom
  self.__root.geometry('%dx%d+%d+%d' % (self.__thisWidth,
self.__thisHeight,
left, top))
 
  # To make the textarea auto resizable
  self.__root.grid_rowconfigure(0, weight=1)
  self.__root.grid_columnconfigure(0, weight=1)
 
  # Add controls (widget)
  self.__thisTextArea.grid(sticky=N + E + S + W)
 
  # To open new file
  self.__thisFileMenu.add_command(label="New",
command=self.__newFile)
 
  # To open a already existing file
  self.__thisFileMenu.add_command(label="Open",
command=self.__openFile)
 
  # To save current file
  self.__thisFileMenu.add_command(label="Save",
command=self.__saveFile)
 
  # To create a line in the dialog
  self.__thisFileMenu.add_separator()
  self.__thisFileMenu.add_command(label="Exit",
command=self.__quitApplication)
  self.__thisMenuBar.add_cascade(label="File",
  menu=self.__thisFileMenu)
 
  # To give a feature of cut
  self.__thisEditMenu.add_command(label="Cut",
command=self.__cut)
 
  # to give a feature of copy
  self.__thisEditMenu.add_command(label="Copy",
command=self.__copy)
 
  # To give a feature of paste
  self.__thisEditMenu.add_command(label="Paste",
command=self.__paste)
 
  # To give a feature of editing
  self.__thisMenuBar.add_cascade(label="Edit",
  menu=self.__thisEditMenu)
 
  # To create a feature of description of the notepad
  self.__thisHelpMenu.add_command(label="About Notepad",
command=self.__showAbout)
  self.__thisMenuBar.add_cascade(label="Help",
  menu=self.__thisHelpMenu)
 
  self.__root.config(menu=self.__thisMenuBar)
 
  self.__thisScrollBar.pack(side=RIGHT, fill=Y)
 
  # Scrollbar will adjust automatically according to the content
  self.__thisScrollBar.config(command=self.__thisTextArea.yview)
  self.__thisTextArea.config(yscrollcommand=self.__thisScrollBar.set)
 
 def __quitApplication(self):
  self.__root.destroy()
  # exit()
 
 def __showAbout(self):
  showinfo("Notepad", "Mrinal Verma")
 
 def __openFile(self):
 
  self.__file = askopenfilename(defaultextension=".txt",
 filetypes=[("All Files", "*.*"),
("Text Documents", "*.txt")])
 
  if self.__file == "":
 
# no file to open
self.__file = None
  else:
 
# Try to open the file
# set the window title
self.__root.title(os.path.basename(self.__file) + " - Notepad")
self.__thisTextArea.delete(1.0, END)
 
file = open(self.__file, "r")
 
self.__thisTextArea.insert(1.0, file.read())
 
file.close()
 
 def __newFile(self):
  self.__root.title("Untitled - Notepad")
  self.__file = None
  self.__thisTextArea.delete(1.0, END)
 
 def __saveFile(self):
 
  if self.__file == None:
# Save as new file
self.__file = asksaveasfilename(initialfile='Untitled.txt',
 defaultextension=".txt",
 filetypes=[("All Files", "*.*"),("Text Documents", "*.txt")])
 
if self.__file == "":
 self.__file = None
else:
 
 # Try to save the file
 file = open(self.__file, "w")
 file.write(self.__thisTextArea.get(1.0, END))
 file.close()
 
 # Change the window title
 self.__root.title(os.path.basename(self.__file) + " - Notepad")
 
 
  else:
file = open(self.__file, "w")
file.write(self.__thisTextArea.get(1.0, END))
file.close()
 
 def __cut(self):
  self.__thisTextArea.event_generate("<<Cut>>")
 
 def __copy(self):
  self.__thisTextArea.event_generate("<<Copy>>")
 
 def __paste(self):
  self.__thisTextArea.event_generate("<<Paste>>")
 
 def run(self):
 
  # Run main application
  self.__root.mainloop()
 
 # Run main application
 
 
notepad = Notepad(width=600, height=400)
notepad.run()

要运行此代码,请使用扩展名.py保存它,然后打开 cmd(命令提示符)并移动到保存文件的位置,然后编写以下内容

python "filename".py 

然后按回车,它就会运行。或者可以通过简单地双击您的.py扩展文件直接运行。

到此这篇关于教你如何使用Python Tkinter库制作记事本的文章就介绍到这了,更多相关Tkinter库制作记事本内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

美国服务器租用

版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

相关文章

实时开通

自选配置、实时开通

免备案

全球线路精选!

全天候客户服务

7x24全年不间断在线

专属顾问服务

1对1客户咨询顾问

在线
客服

在线客服:7*24小时在线

客服
热线

400-630-3752
7*24小时客服服务热线

关注
微信

关注官方微信
顶部