Tkinter पायथन से एक GUI लाइब्रेरी है जिससे हम कई GUI ऐप्स बना सकते हैं। यहां, tkinter का उपयोग करके हम नोटपैड जैसा टेक्स्ट एडिटर विकसित करेंगे। इस नोटपैड में मेनू होगा जहां हम नई फ़ाइल बना सकते हैं, मौजूदा फ़ाइल खोल सकते हैं, फ़ाइल सहेज सकते हैं, संपादन, कट और पेस्ट, सभी कार्यक्षमता होगी।
पूर्वापेक्षा
- पायथन इंस्टॉल्ड।
- Tkinter इंस्टॉल्ड।
नोट: tkinter पायथन 3.x के साथ मानक लाइब्रेरी के रूप में आता है।
मेनू आइटम जोड़ना:
हमारे नोटपैड में चार मुख्य मेनू आइटम होंगे: File, Edit, Commands & Help। हमारा फ़ाइल मेनू आइटम में चार सब-आइटम होंगे - New, Open, Save & Exit।

हमारा एडिट मेनू आइटम में तीन सब-आइटम होंगे - cut, copy & paste

हमारा कमांड मेनू आइटम में एक सबआइटम होगा - About commands,

और हमारा हेल्प मेनू में एक सबआइटम होगा - About notepad

हम नीचे दिए गए कोड का उपयोग करके इतने सारे मेनू-आइटम और सबआइटम देने जा रहे हैं:
# नई फ़ाइल खोलने के लिए
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.__thisCommandMenu.add_command(label="About Commands", command=self.__showCommand)
self.__thisMenuBar.add_cascade(label="Commands", menu=self.__thisCommandMenu)
self.__thisMenuBar.add_cascade(label="Help", menu=self.__thisHelpMenu)
प्रत्येक मेनू आइटम में कार्यक्षमता जोड़ना
अब हमारे पास मेनू आइटम तैयार हैं, अब हम प्रत्येक मेनू आइटम में कार्यक्षमता जोड़ने जा रहे हैं। नीचे उन कार्यक्षमताओं की सूची है जिन्हें हम इस नोटपैड में जोड़ने जा रहे हैं (बेशक आप कई अन्य भी जोड़ सकते हैं)।
- फ़ाइल खोलें
- नई फ़ाइल
- फ़ाइल सहेजें
- एप्लिकेशन छोड़ें
- अबाउट दिखाएं
- कमांड दिखाएं
- कट
- कॉपी
- पेस्ट
उपरोक्त उल्लिखित कार्यक्षमता को लागू करने का कोड नीचे दिया गया है:
def __quitApplication(self):
self.__root.destroy()
# exit()
def __showAbout(self):
showinfo("About Notepad", "Simple text editor like notepad using Python")
def __showCommand(self):
showinfo("Notepad", "Just Another TextPad \n Copyright \n with BSD license you can use it'")
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("<>")
def __copy(self):
self.__thisTextArea.event_generate("<>")
def __paste(self):
self.__thisTextArea.event_generate("<>")
अब हमने आवश्यक पैकेज जोड़ लिया है, मेनू आइटम जोड़ लिया है और आवश्यक कार्यक्षमता जो हम इस नोटपैड जैसे टेक्स्ट एडिटर में tkinter लाइब्रेरी का उपयोग करके देखने जा रहे हैं।
नीचे tkinter का उपयोग करके नोटपैड टेक्स्ट एडिटर बनाने का पूरा प्रोग्राम है:
# os लाइब्रेरी आयात करें
import os
# tkinter से सब कुछ आयात करें
from tkinter import *
# संदेश के ऊपर जगह पाने के लिए
from tkinter.messagebox import *
# आवश्यकता पड़ने पर खुलने वाले डायलॉग बॉक्स के लिए
from tkinter.filedialog import *
class Notepad:
# रूट विजेट सेट करें
__root = Tk()
__thisWidth = 500
__thisHeight = 700
__thisTextArea = Text(__root)
__thisMenuBar = Menu(__root)
__thisFileMenu = Menu(__thisMenuBar, tearoff=0)
__thisEditMenu = Menu(__thisMenuBar, tearoff=0)
__thisHelpMenu = Menu(__thisMenuBar, tearoff=0)
__thisCommandMenu = Menu(__thisMenuBar, tearoff=0)
# स्क्रॉलबार जोड़ने के लिए
__thisScrollBar = Scrollbar(__thisTextArea)
__file = None
def __init__(self, **kwargs):
# आइकन
try:
self.__root.wm_iconbitmap("Notepad.ico")
except:
pass
# विंडो आकार सेट करें जैसा ऊपर बताया गया है (डिफ़ॉल्ट 300x300 है)
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.__thisCommandMenu.add_command(label="About Commands", command=self.__showCommand)
self.__thisMenuBar.add_cascade(label="Commands", menu=self.__thisCommandMenu)
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()
# exit()
def __showAbout(self):
showinfo("About Notepad", "Simple text editor like notepad using Python")
def __showCommand(self):
showinfo("Notepad", "Just Another TextPad \n Copyright \n with BSD license you can use it'")
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("<>")
def __copy(self):
self.__thisTextArea.event_generate("<>")
def __paste(self):
self.__thisTextArea.event_generate("<>")
def run(self):
# मुख्य एप्लिकेशन चलाएं
self.__root.mainloop()
# मुख्य एप्लिकेशन चलाएं
notepad = Notepad(width=600, height=400)
notepad.run()
उपरोक्त प्रोग्राम चलाने पर, हमें एक पॉप-अप नोटपैड टेक्स्ट एडिटर मिलेगा, जैसा कि

इस नोटपैड में, हम इसमें लिख सकते हैं, इसे सहेज सकते हैं और अपनी सहेजी गई फ़ाइल (या कोई अन्य फ़ाइल) खोल सकते हैं। हम खुली फ़ाइल की सामग्री से कट, कॉपी और पेस्ट बना सकते हैं। आप इस नए बने नोटपैड के सभी मेनू आइटम का उपयोग कर सकते हैं।