इसलिए, मैंने freecodecamp.org से टिंकर ट्यूटोरियल शुरू किया और मैं कैलकुलेटर बनाने के बिंदु पर हूं। मैं पत्र के ट्यूटोरियल का अनुसरण कर रहा हूं, जबकि अपने आप पर थोड़ा प्रयोग भी कर रहा हूं। यहाँ मेरी समस्या उत्पन्न हुई, वीडियो में कैलकुलेटर 2 अंतिम संख्याओं के योग को आउटपुट करता है और यदि आप "नंबर + नंबर =" दबाते हैं, तो आप कितने भी नंबर दबाते हैं और उनके बाद + केवल अंतिम दो होंगे जोड़ा जाना। मैं क्या करना चाहता हूं कि जब भी मैं + बटन दबाता हूं, तो योग वैश्विक चर में संग्रहीत होता है लेकिन मुझे ऐसा करने में परेशानी हो रही है।

from tkinter import *

root = Tk()
root.title("Simple calculator")

e = Entry(root, width=35, borderwidth=3)
e.grid(row=0, column=0, columnspan=3, padx=10, pady=10)


# button functions

def button_click(number):
    # e.delete(0, END)
    current = e.get()
    e.delete(0, END)
    e.insert(0, str(current) + str(number))


def button_clear():
    e.delete(0, END)


def button_add():
    temp = 0 + int(e.get())
    global v_keeper
    v_keeper = int(temp)
    e.delete(0,END)


def button_equal():
    temp = int(e.get())
    e.delete(0,END)
    e.insert(0,v_keeper + temp)


#button gui
button_1 = Button(root, text="1", padx=40, pady=20, command=lambda: button_click(1))
button_2 = Button(root, text="2", padx=40, pady=20, command=lambda: button_click(2))
button_3 = Button(root, text="3", padx=40, pady=20, command=lambda: button_click(3))
button_4 = Button(root, text="4", padx=40, pady=20, command=lambda: button_click(4))
button_5 = Button(root, text="5", padx=40, pady=20, command=lambda: button_click(5))
button_6 = Button(root, text="6", padx=40, pady=20, command=lambda: button_click(6))
button_7 = Button(root, text="7", padx=40, pady=20, command=lambda: button_click(7))
button_8 = Button(root, text="8", padx=40, pady=20, command=lambda: button_click(8))
button_9 = Button(root, text="9", padx=40, pady=20, command=lambda: button_click(9))
button_0 = Button(root, text="0", padx=40, pady=20, command=lambda: button_click(0))
button_add = Button(root, text="+", padx=39, pady=20, command=button_add)
button_equal = Button(root, text="=", padx=91, pady=20, command=button_equal)
button_clear = Button(root, text="Clear", padx=79, pady=20, command=button_clear)

# put buttons on screen

button_1.grid(row=3, column=0)
button_2.grid(row=3, column=1)
button_3.grid(row=3, column=2)

button_4.grid(row=2, column=0)
button_5.grid(row=2, column=1)
button_6.grid(row=2, column=2)

button_7.grid(row=1, column=0)
button_8.grid(row=1, column=1)
button_9.grid(row=1, column=2)

button_0.grid(row=4, column=0)
button_clear.grid(row=4, column=1, columnspan=2)
button_add.grid(row=5, column=0)
button_equal.grid(row=5, column=1, columnspan=2)

# myButton = Button(root, text="Enter your name", command=myClick)


root.mainloop()
2
I_Burn 13 अप्रैल 2020, 13:15

1 उत्तर

सबसे बढ़िया उत्तर

अस्वीकरण: जब भी संभव हो आपको वैश्विक चरों से बचना चाहिए। वे अचूक, असंरचित कोड की ओर ले जाते हैं।

आपके ग्लोबल्स के लिए समाधान पथ यहां दिया गया है:

पहला: अपनी स्क्रिप्ट की शुरुआत में वैश्विक चर v_keep को परिभाषित करें और इसे 0 से प्रारंभ करें।

दूसरा: button_add में आप इसे गलत मान दे रहे थे। आप वर्तमान कुल राशि को वहां संग्रहित करना चाहते हैं।

तीसरा: आपको v_keeper को भी button_clear और button_equal में अपडेट करना होगा।

वांछित परिणाम प्राप्त करने के लिए यह आपके कोड का हिस्सा है जिसे मैंने बदल दिया है:


v_keeper = 0


# button functions

def button_click(number):
    # e.delete(0, END)
    current = e.get()
    e.delete(0, END)
    e.insert(0, str(current) + str(number))


def button_clear():
    global v_keeper
    v_keeper = 0
    e.delete(0, END)


def button_add():
    global v_keeper
    v_keeper = v_keeper + int(e.get())
    e.delete(0, END)

button_equal को अपडेट करना पाठक के लिए एक अभ्यास के रूप में छोड़ दिया गया है :)

1
Lydia van Dyke 13 अप्रैल 2020, 11:57