Machen Sie Notepad mit Tkinter
Mal sehen, wie man mit Tkinter einen einfachen Notizblock in Python erstellt. Diese Notizblock-GUI besteht aus verschiedenen Menüs wie Datei und Bearbeitung, mit denen alle Funktionen wie Speichern der Datei, Öffnen einer Datei, Bearbeiten, Ausschneiden und Einfügen ausgeführt werden können.
Zum Erstellen dieses Notizblocks sollten Python 3 und Tkinter bereits auf Ihrem System installiert sein. Sie können ein geeignetes Python-Paket gemäß den Systemanforderungen herunterladen . Nachdem Sie Python erfolgreich installiert haben, müssen Sie Tkinter (ein GUI-Paket von Python) installieren.
Verwenden Sie diesen Befehl, um Tkinter zu installieren:
pip installiere python-tk
Tkinter importieren:
import
tkinter
import
os
from
tkinter
import
*
from
tkinter.messagebox
import
*
from
tkinter.filedialog
import
*
Hinweis: messagebox wird verwendet , um die Nachricht in dem weißen Feld namens Notizblock und schrieb Dateidialog wird für das Dialogfeld verwendet , angezeigt , wenn Sie Datei von überall in Ihrem System oder Speicher von Dateien in einer bestimmten Position oder Ort öffnen.
Menü hinzufügen:
self
.__thisTextArea.grid(sticky
=
N
+
E
+
S
+
W)
self
.__thisFileMenu.add_command(label
=
"New"
,
command
=
self
.__newFile)
self
.__thisFileMenu.add_command(label
=
"Open"
,
command
=
self
.__openFile)
self
.__thisFileMenu.add_command(label
=
"Save"
,
command
=
self
.__saveFile)
self
.__thisFileMenu.add_separator()
self
.__thisFileMenu.add_command(label
=
"Exit"
,
command
=
self
.__quitApplication)
self
.__thisMenuBar.add_cascade(label
=
"File"
,
menu
=
self
.__thisFileMenu)
self
.__thisEditMenu.add_command(label
=
"Cut"
,
command
=
self
.__cut)
self
.__thisEditMenu.add_command(label
=
"Copy"
,
command
=
self
.__copy)
self
.__thisEditMenu.add_command(label
=
"Paste"
,
command
=
self
.__paste)
self
.__thisMenuBar.add_cascade(label
=
"Edit"
,
menu
=
self
.__thisEditMenu)
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)
self
.__thisScrollBar.config(command
=
self
.__thisTextArea.yview)
self
.__thisTextArea.config(yscrollcommand
=
self
.__thisScrollBar.
set
)
Mit diesem Code fügen wir das Menü in den Fenstern unseres Notizblocks hinzu und fügen Dinge wie Kopieren, Einfügen, Speichern usw. hinzu.
Hinzufügen der Funktionalität:
def
__quitApplication(
self
):
self
.__root.destroy()
def
__showAbout(
self
):
showinfo(
"Notepad"
,
"Mrinal Verma"
)
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)
+
" - 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
:
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
.__thisTextArea.get(
1.0
,END))
file
.close()
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>>"
)
Hier haben wir alle Funktionen hinzugefügt, die für den Editor erforderlich sind. Sie können auch andere Funktionen hinzufügen, z. B. Schriftgröße, Schriftfarbe, Fettdruck, Unterstrichen usw.
Hauptcode nach dem Zusammenführen aller:
import
tkinter
import
os
from
tkinter
import
*
from
tkinter.messagebox
import
*
from
tkinter.filedialog
import
*
class
Notepad:
__root
=
Tk()
__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
)
__thisScrollBar
=
Scrollbar(__thisTextArea)
__file
=
None
def
__init__(
self
,
*
*
kwargs):
try
:
self
.__root.wm_iconbitmap(
"Notepad.ico"
)
except
:
pass
try
:
self
.__thisWidth
=
kwargs[
'width'
]
except
KeyError:
pass
try
:
self
.__thisHeight
=
kwargs[
'height'
]
except
KeyError:
pass
self
.__root.title(
"Untitled - Notepad"
)
screenWidth
=
self
.__root.winfo_screenwidth()
screenHeight
=
self
.__root.winfo_screenheight()
left
=
(screenWidth
/
2
)
-
(
self
.__thisWidth
/
2
)
top
=
(screenHeight
/
2
)
-
(
self
.__thisHeight
/
2
)
self
.__root.geometry(
'%dx%d+%d+%d'
%
(
self
.__thisWidth,
self
.__thisHeight,
left, top))
self
.__root.grid_rowconfigure(
0
, weight
=
1
)
self
.__root.grid_columnconfigure(
0
, weight
=
1
)
self
.__thisTextArea.grid(sticky
=
N
+
E
+
S
+
W)
self
.__thisFileMenu.add_command(label
=
"New"
,
command
=
self
.__newFile)
self
.__thisFileMenu.add_command(label
=
"Open"
,
command
=
self
.__openFile)
self
.__thisFileMenu.add_command(label
=
"Save"
,
command
=
self
.__saveFile)
self
.__thisFileMenu.add_separator()
self
.__thisFileMenu.add_command(label
=
"Exit"
,
command
=
self
.__quitApplication)
self
.__thisMenuBar.add_cascade(label
=
"File"
,
menu
=
self
.__thisFileMenu)
self
.__thisEditMenu.add_command(label
=
"Cut"
,
command
=
self
.__cut)
self
.__thisEditMenu.add_command(label
=
"Copy"
,
command
=
self
.__copy)
self
.__thisEditMenu.add_command(label
=
"Paste"
,
command
=
self
.__paste)
self
.__thisMenuBar.add_cascade(label
=
"Edit"
,
menu
=
self
.__thisEditMenu)
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)
self
.__thisScrollBar.config(command
=
self
.__thisTextArea.yview)
self
.__thisTextArea.config(yscrollcommand
=
self
.__thisScrollBar.
set
)
def
__quitApplication(
self
):
self
.__root.destroy()
def
__showAbout(
self
):
showinfo(
"Notepad"
,
"Mrinal Verma"
)
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)
+
" - 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
:
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
.__thisTextArea.get(
1.0
,END))
file
.close()
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
):
self
.__root.mainloop()
notepad
=
Notepad(width
=
600
,height
=
400
)
notepad.run()
Um diesen Code auszuführen, speichern Sie ihn unter der Erweiterung .py und öffnen Sie dann cmd (Eingabeaufforderung). Wechseln Sie zum Speicherort der gespeicherten Datei und schreiben Sie Folgendes
Python "Dateiname" .py
und drücken Sie die Eingabetaste und es wird ausgeführt. Oder Sie können es direkt ausführen, indem Sie einfach auf Ihre .py- Erweiterungsdatei doppelklicken.
Ausgabe :