Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में Tkinter का उपयोग करके नोटपैड विकसित करना

Tkinter पायथन से एक GUI लाइब्रेरी है जिससे हम कई GUI ऐप्स बना सकते हैं। यहां, tkinter का उपयोग करके हम नोटपैड जैसा टेक्स्ट एडिटर विकसित करेंगे। इस नोटपैड में मेनू होगा जहां हम नई फ़ाइल बना सकते हैं, मौजूदा फ़ाइल खोल सकते हैं, फ़ाइल सहेज सकते हैं, संपादन, कट और पेस्ट, सभी कार्यक्षमता होगी।

पूर्वापेक्षा

  • पायथन इंस्टॉल्ड।
  • Tkinter इंस्टॉल्ड।

नोट: tkinter पायथन 3.x के साथ मानक लाइब्रेरी के रूप में आता है।

मेनू आइटम जोड़ना:

हमारे नोटपैड में चार मुख्य मेनू आइटम होंगे: File, Edit, Commands & Help। हमारा फ़ाइल मेनू आइटम में चार सब-आइटम होंगे - New, Open, Save & Exit।

पायथन में Tkinter का उपयोग करके नोटपैड विकसित करना

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

पायथन में Tkinter का उपयोग करके नोटपैड विकसित करना

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

पायथन में Tkinter का उपयोग करके नोटपैड विकसित करना

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

पायथन में Tkinter का उपयोग करके नोटपैड विकसित करना

हम नीचे दिए गए कोड का उपयोग करके इतने सारे मेनू-आइटम और सबआइटम देने जा रहे हैं:

# नई फ़ाइल खोलने के लिए
    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()

उपरोक्त प्रोग्राम चलाने पर, हमें एक पॉप-अप नोटपैड टेक्स्ट एडिटर मिलेगा, जैसा कि

पायथन में Tkinter का उपयोग करके नोटपैड विकसित करना

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

  1. पायथन का उपयोग करके Base64 डेटा एन्कोडिंग पायथन का उपयोग करके Base64 डेटा एन्कोडिंग

    base64 मॉड्यूल में फंक्शन बाइनरी डेटा को ASCII के एक सबसेट में अनुवादित करते हैं जो प्लेनटेक्स्ट प्रोटोकॉल का उपयोग करके ट्रांसमिशन के लिए उपयुक्त है। एन्कोडिंग और डिकोडिंग फंक्शन RFC 3548 में विनिर्देशों को लागू करते हैं, जो Base16, Base32, और Base64 एल्गोरिदम को परिभाषित करता है, और डी-फैक्टो मान

  1. पायथन का उपयोग करके वेबसाइट ब्लॉकर पायथन का उपयोग करके वेबसाइट ब्लॉकर

    यदि आप एक बड़ी IT कंपनी में काम कर रहे हैं तो आप देख सकते हैं कि उनकी कुछ वेबसाइटें अवरुद्ध हैं, विशेष रूप से सोशल नेटवर्किंग साइट्स जैसे फेसबुक, यूट्यूब, इंस्टाग्राम आदि। कुछ वेबसाइटों को ब्लॉक करने के लिए थर्ड-पार्टी एप्लिकेशन का उपयोग करने के बजाय, हम अपना खुद का कस्टम एप्लिकेशन विकसित कर सकते ह

  1. पायथन में Tkinter का उपयोग करके रंग खेल पायथन में Tkinter का उपयोग करके रंग खेल

    GUI एप्लिकेशन विकसित करने के लिए tkinter बहुत लोकप्रिय और आसान है। Tkinter का उपयोग करके आसानी से GUI गेम विकसित किए जा सकते हैं। यहाँ भी हम रंग खेल विकसित करने का प्रयास कर रहे हैं। इस खेल में खिलाड़ी को स्क्रीन पर दिखाई देने वाले शब्द का रंग दर्ज करना होता है और इस तरह स्कोर एक से बढ़ जाता है, इस