परिचय
पायथन में, हम tkinter लाइब्रेरी का उपयोग करते हैं जीयूआई घटकों को बनाने और बेहतर यूजर इंटरफेस तैयार करने के लिए।
इस लेख में आप एक साधारण GUI आधारित कैलकुलेटर एप्लिकेशन बनाने के तरीके सीखेंगे।
आरंभ करना
इससे पहले कि हम इसमें कूदें, कुछ चीजें हैं जिन्हें हमें पहले व्यवस्थित करने की आवश्यकता है।
आइए हम पायथन की इमेजिंग लाइब्रेरी को डाउनलोड करके शुरू करें जिसका उपयोग हम अपने स्थानीय सिस्टम से चित्र प्राप्त करने के लिए करेंगे। जनहित याचिका (तकिया) स्थापित करने के लिए, अपना टर्मिनल लॉन्च करें और नीचे कमांड टाइप करें।
pip install Pillow
अब जब आपके पास पैकेज स्थापित हो गया है। आपको कैलकुलेटर के लिए आवश्यक आइकन डाउनलोड करने होंगे।
आप Google छवियों पर जा सकते हैं और आवश्यक आइकन डाउनलोड कर सकते हैं। हालांकि, यदि आप इस प्रोजेक्ट के लिए उपयोग किए गए आइकन के समान सेट चाहते हैं, तो आप इसे -
से डाउनलोड कर सकते हैं।https://www.dropbox.com/sh/0zqd6zd9b8asmor/AAC3d2iOvMRl8INkbCuMUo_ya?dl=0.
सुनिश्चित करें कि आप सभी आइकन "एसेट" नामक फ़ोल्डर में डाउनलोड करते हैं।
अगला, हमें आवश्यक मॉड्यूल आयात करने की आवश्यकता है।
from tkinter import * from PIL import Image # pip install Pillow from PIL import ImageTk
और बस। अब आपके पास सब कुछ सेट अप और आरंभ करने के लिए तैयार होना चाहिए।
फ़ंक्शंस बनाना
सबसे पहले, हमें GUI घटकों द्वारा उपयोग किए जाने वाले फ़ंक्शन बनाने चाहिए।
तीन मुख्य कार्य होते हैं, एक जब संख्या या प्रतीक को दबाया जाता है, दूसरा जब बराबर बटन दबाया जाता है और फिर अंत में जब स्पष्ट बटन दबाया जाता है।
आइए पहले कुछ वैश्विक चरों को इनिशियलाइज़ करें -
txt = "" res = False ans = 0
उदाहरण
फ़ंक्शन जब कुंजी की संख्या को दबाया जाता है -
def press(num): global txt, ans, res if (res==True): txt = ans res = False txt = txt + str(num) equation.set(txt)
उदाहरण1
फंक्शन जब इक्वल टू बटन को दबाया जाता है -
def equal(): try: global txt, ans, res ans = str(eval(txt)) equation.set(ans) res = True except: equation.set("ERROR : Invalid Equation") txt=""
स्पष्ट बटन दबाए जाने पर कार्य करें -
उदाहरण
def clear(): global txt, ans, res txt = "" equation.set("") res = False
अब जब हमने फ़ंक्शन को परिभाषित कर दिया है, तो हम मुख्य फ़ंक्शन शुरू कर सकते हैं और GUI घटकों पर काम करना शुरू कर सकते हैं।
if __name__ == "__main__": window = Tk() window.configure(background="black") window.title("Calculator") window.iconbitmap("assets\Calculator\Logo.ico") window.geometry("343x417") window.resizable(0,0)
कोड की उपरोक्त पंक्तियाँ एक आदर्श कैलकुलेटर की संरचना करेंगी।
नोट - त्रुटियों से बचने के लिए, सुनिश्चित करें कि आप ऊपर दिए गए कोड के अनुसार सटीक फ़ाइल संरचना का पालन करते हैं। कैलकुलेटर फोल्डर के अंदर लोगो आइकन को सेव करें जो एसेट फोल्डर में है।
नीचे दिए गए प्रारूप का पालन करें -
+---Working Directory +---Calculator.py +---assets +---Calculator +---All the icons.
अगला, आइए टेक्स्ट फ़ील्ड डिज़ाइन करें जहाँ हम संख्याएँ देखेंगे।
equation = StringVar() txt_field = Entry(relief=RIDGE,textvariable=equation,bd=10,font=("Aerial",20),bg="powder blue") txt_field.grid(columnspan=4,ipady=10,ipadx=10,sticky="nsew")
अब, हम एक-एक करके GUI विंडो में आइकन जोड़ने की दोहराई जाने वाली प्रक्रिया का पालन करेंगे। नीचे इसका एक उदाहरण है, बाकी के लिए इसका अनुसरण करें या इस लेख के अंत में पूरे कोड से इसे कॉपी करें।
उदाहरण
width=80 height=80 img1 = Image.open("assets/Calculator/one.PNG") img1 = img1.resize((width,height)) oneImage = ImageTk.PhotoImage(img1) button1 = Button(window, image=oneImage,bg="white",command = lambda:press(1),height=height,width=width) button1.grid(row=2,column=0,sticky="nsew")
उपरोक्त पंक्तियों के समान, बटन 2, बटन 3 और तब तक का पालन करें जब तक आप सभी संख्याओं और प्रतीकों को कवर नहीं कर लेते।
और बस। यदि आप अभी प्रोग्राम चलाते हैं, तो आपको एक बहुत ही सारगर्भित दिखने वाला कैलकुलेटर देखना होगा।
यदि आप अनुवर्ती कार्रवाई में सक्षम नहीं हैं, तो आप नीचे से पूरा कोड ले सकते हैं।
उदाहरण
from tkinter import * from PIL import Image from PIL import ImageTk txt = "" res = False ans = 0 def press(num): global txt, ans, res if (res==True): txt = ans res = False txt = txt + str(num) equation.set(txt) def equal(): try: global txt, ans, res ans = str(eval(txt)) equation.set(ans) res = True except: equation.set("ERROR : Invalid Equation") txt="" def clear(): global txt, ans, res txt = "" equation.set("") res = False if __name__ == "__main__": window = Tk() window.configure(background="black") window.title("Calculator") window.iconbitmap("assets\Calculator\Logo.ico") window.geometry("343x417") window.resizable(0,0) equation = StringVar() txt_field = Entry(relief=RIDGE,textvariable=equation,bd=10,font=("Aerial",20),bg="powder blue") txt_field.grid(columnspan=4,ipady=10,ipadx=10,sticky="nsew") width=80 height=80 img1 = Image.open("assets/Calculator/one.PNG") img1 = img1.resize((width,height)) oneImage = ImageTk.PhotoImage(img1) button1 = Button(window, image=oneImage,bg="white",command = lambda:press(1),height=height,width=width) button1.grid(row=2,column=0,sticky="nsew") img2 = Image.open("assets/Calculator/two.PNG") img2 = img2.resize((width,height)) twoImage = ImageTk.PhotoImage(img2) button2 = Button(window, image=twoImage,bg="white",command = lambda:press(2),height=height,width=width) button2.grid(row=2,column=1,sticky="nsew") img3 = Image.open("assets/Calculator/three.PNG") img3 = img3.resize((width,height)) threeImage = ImageTk.PhotoImage(img3) button3 = Button(window, image=threeImage,bg="white",command = lambda:press(3),height=height,width=width) button3.grid(row=2,column=2,sticky="nsew") img4 = Image.open("assets/Calculator/four.PNG") img4 = img4.resize((width,height)) fourImage = ImageTk.PhotoImage(img4) button4 = Button(window, image=fourImage,bg="white",command = lambda:press(4),height=height,width=width) button4.grid(row=3,column=0,sticky="nsew") img5 = Image.open("assets/Calculator/five.PNG") img5 = img5.resize((width,height)) fiveImage = ImageTk.PhotoImage(img5) button5 = Button(window, image=fiveImage,bg="white",command = lambda:press(5),height=height,width=width) button5.grid(row=3,column=1,sticky="nsew") img6 = Image.open("assets/Calculator/six.PNG") img6 = img6.resize((width,height)) sixImage = ImageTk.PhotoImage(img6) button6 = Button(window, image=sixImage,bg="white",command = lambda:press(6),height=height,width=width) button6.grid(row=3,column=2,sticky="nsew") img7 = Image.open("assets/Calculator/seven.PNG") img7 = img7.resize((width,height)) sevenImage = ImageTk.PhotoImage(img7) button7 = Button(window, image=sevenImage,bg="white",command = lambda:press(7),height=height,width=width) button7.grid(row=4,column=0,sticky="nsew") img8 = Image.open("assets/Calculator/eight.PNG") img8 = img8.resize((width,height)) eightImage = ImageTk.PhotoImage(img8) button8 = Button(window, image=eightImage,bg="white",command = lambda:press(8),height=height,width=width) button8.grid(row=4,column=1,sticky="nsew") img9 = Image.open("assets/Calculator/nine.PNG") img9 = img9.resize((width,height)) nineImage = ImageTk.PhotoImage(img9) button9 = Button(window, image=nineImage,bg="white",command = lambda:press(9),height=height,width=width) button9.grid(row=4,column=2,sticky="nsew") img0 = Image.open("assets/Calculator/zero.PNG") img0 = img0.resize((width,height)) zeroImage = ImageTk.PhotoImage(img0) button0 = Button(window, image=zeroImage,bg="white",command = lambda:press(0),height=height,width=width) button0.grid(row=5,column=1,sticky="nsew") imgx = Image.open("assets/Calculator/multiply.PNG") imgx = imgx.resize((width,height)) multiplyImage = ImageTk.PhotoImage(imgx) buttonx = Button(window, image=multiplyImage,bg="white",command = lambda:press("*"),height=height,width=width) buttonx.grid(row=2,column=3,sticky="nsew") imgadd = Image.open("assets/Calculator/add.PNG") imgadd = imgadd.resize((width,height)) addImage = ImageTk.PhotoImage(imgadd) buttonadd = Button(window, image=addImage,bg="white",command = lambda:press("+"),height=height,width=width) buttonadd.grid(row=3,column=3,sticky="nsew") imgdiv = Image.open("assets/Calculator/divide.PNG") imgdiv = imgdiv.resize((width,height)) divImage = ImageTk.PhotoImage(imgdiv) buttondiv = Button(window, image=divImage,bg="white",command = lambda:press("/"),height=height,width=width) buttondiv.grid(row=5,column=3,sticky="nsew") imgsub = Image.open("assets/Calculator/subtract.PNG") imgsub = imgsub.resize((width,height)) subImage = ImageTk.PhotoImage(imgsub) buttonsub = Button(window, image=subImage,bg="white",command = lambda:press("- "),height=height,width=width) buttonsub.grid(row=4,column=3,sticky="nsew") imgeq = Image.open("assets/Calculator/equal.PNG") imgeq = imgeq.resize((width,height)) eqImage = ImageTk.PhotoImage(imgeq) buttoneq = Button(window, image=eqImage,bg="white",command = equal,height=height,width=width) buttoneq.grid(row=5,column=2,sticky="nsew") imgclear = Image.open("assets/Calculator/clear.PNG") imgclear = imgclear.resize((width,height)) clearImage = ImageTk.PhotoImage(imgclear) buttonclear = Button(window, image=clearImage,bg="white",command = clear,height=height,width=width) buttonclear.grid(row=5,column=0,sticky="nsew") window.mainloop()
यदि आपको उपरोक्त कार्यक्रम के साथ प्रारूपण संबंधी समस्याएं आ रही हैं, तो आप इसे https://github.com/SVijayB/PyHub/blob/master/Graphics/Simple%20Calculator.py से भी प्राप्त कर सकते हैं।
आउटपुट