教你如何使用Python Tkinter庫(kù)制作記事本
Tkinter庫(kù)制作記事本
現(xiàn)在為了創(chuàng)建這個(gè)記事本,你的系統(tǒng)中應(yīng)該已經(jīng)安裝了 Python 3 和 Tkinter。您可以根據(jù)系統(tǒng)要求下載合適的python 包。成功安裝 python 后,您需要安裝 Tkinter(一個(gè) Python 的 GUI 包)。
使用此命令安裝 Tkinter :
pip install python-tk
導(dǎo)入 Tkinter :
import tkinter import os from tkinter import * from tkinter.messagebox import * from tkinter.filedialog import *
注意: messagebox用于在稱為記事本的白框中寫(xiě)入消息,filedialog用于在您從系統(tǒng)中的任何位置打開(kāi)文件或?qū)⑽募4嬖谔囟ㄎ恢没蛭恢脮r(shí)出現(xiàn)的對(duì)話框。
添加菜單:
# 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)行此代碼,請(qǐng)使用擴(kuò)展名.py保存它,然后打開(kāi) cmd(命令提示符)并移動(dòng)到保存文件的位置,然后編寫(xiě)以下內(nèi)容
python "filename".py
然后按回車,它就會(huì)運(yùn)行?;蛘呖梢酝ㄟ^(guò)簡(jiǎn)單地雙擊您的.py擴(kuò)展文件直接運(yùn)行。

到此這篇關(guān)于教你如何使用Python Tkinter庫(kù)制作記事本的文章就介紹到這了,更多相關(guān)Tkinter庫(kù)制作記事本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 將md5轉(zhuǎn)為16字節(jié)的方法
今天小編就為大家分享一篇python 將md5轉(zhuǎn)為16字節(jié)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
簡(jiǎn)單談?wù)凱ython中的反轉(zhuǎn)字符串問(wèn)題
本文給大家總結(jié)了5種可以實(shí)現(xiàn)python中反轉(zhuǎn)字符串的方法,非常的實(shí)用,有需要的小伙伴可以參考下2016-10-10
python中將數(shù)據(jù)生成為Excel文件的5種方法舉例
工作中需要把數(shù)據(jù)導(dǎo)入到excel中,記錄一下操作方式,這篇文章主要給大家介紹了關(guān)于python中將數(shù)據(jù)生成為Excel文件的5種方法,文中通過(guò)圖文以及代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
Python操作Redis數(shù)據(jù)庫(kù)的超詳細(xì)教程
大家應(yīng)該都知道redis是一個(gè)基于內(nèi)存的高效的鍵值型非關(guān)系數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python操作Redis的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
Python數(shù)據(jù)集庫(kù)Vaex秒開(kāi)100GB加數(shù)據(jù)
這篇文章主要為大家介紹了Python數(shù)據(jù)集庫(kù)Vaex秒開(kāi)100GB加數(shù)據(jù)實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Python通過(guò)OpenPyXL處理Excel的完整教程
OpenPyXL是一個(gè)強(qiáng)大的Python庫(kù),用于處理Excel文件,允許讀取、編輯和創(chuàng)建Excel工作簿和工作表,本文將詳細(xì)介紹OpenPyXL的各種功能,希望對(duì)大家有所幫助2023-11-11
淺析如何在Python中使用結(jié)構(gòu)模式匹配
在Python 3.10中引入了模式匹配語(yǔ)法,允許我們?cè)趹?yīng)用程序中使用強(qiáng)大的新編程技術(shù)進(jìn)行決策,下面我們就來(lái)講講如何在Python中使用結(jié)構(gòu)模式匹配吧2023-08-08
Python利用字典樹(shù)實(shí)現(xiàn)獵詞游戲
獵詞(word hunt)是一類很常見(jiàn)的游戲,給你一張字母組成的表,然后讓你在這些字母中盡可能多的去尋找單詞。這類游戲用字典樹(shù)就能輕松完成,本文就來(lái)具體講講實(shí)現(xiàn)步驟,需要的可以參考一下2022-06-06

