Tkinter庫制作記事本
現(xiàn)在為了創(chuàng)建這個記事本,你的系統(tǒng)中應(yīng)該已經(jīng)安裝了 Python 3 和 Tkinter。您可以根據(jù)系統(tǒng)要求下載合適的python 包。成功安裝 python 后,您需要安裝 Tkinter(一個 Python 的 GUI 包)。
使用此命令安裝 Tkinter :
導(dǎo)入 Tkinter :
import tkinter
import os
from tkinter import *
from tkinter.messagebox import *
from tkinter.filedialog import *
注意: messagebox用于在稱為記事本的白框中寫入消息,filedialog用于在您從系統(tǒng)中的任何位置打開文件或?qū)⑽募4嬖谔囟ㄎ恢没蛭恢脮r出現(xiàn)的對話框。
添加菜單:
# 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)
使用此代碼,我們將在記事本的窗口中添加菜單,并向其中添加復(fù)制、粘貼、保存等內(nèi)容。
添加功能:
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()
要運(yùn)行此代碼,請使用擴(kuò)展名.py保存它,然后打開 cmd(命令提示符)并移動到保存文件的位置,然后編寫以下內(nèi)容
然后按回車,它就會運(yùn)行。或者可以通過簡單地雙擊您的.py擴(kuò)展文件直接運(yùn)行。
到此這篇關(guān)于教你如何使用Python Tkinter庫制作記事本的文章就介紹到這了,更多相關(guān)Tkinter庫制作記事本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- Python實(shí)戰(zhàn)之用tkinter庫做一個鼠標(biāo)模擬點(diǎn)擊器
- 使用Python中tkinter庫簡單gui界面制作及打包成exe的操作方法(二)
- python tkinter庫實(shí)現(xiàn)氣泡屏保和鎖屏
- python自帶tkinter庫實(shí)現(xiàn)棋盤覆蓋圖形界面
- python使用tkinter庫實(shí)現(xiàn)五子棋游戲
- Python使用tkinter庫實(shí)現(xiàn)文本顯示用戶輸入功能示例
- python基于Tkinter庫實(shí)現(xiàn)簡單文本編輯器實(shí)例