Ich arbeite an einem Taschenrechner und ich will es so, sobald der Benutzer die Eingabe der ersten Nummer abgeschlossen ist und wählt einen Operator (+ - */etc.) sie können eine zweite Nummer eingeben und dann drücken Sie eine Gleichheits-Taste, um ihre Antwort zu erhalten .Was wäre der beste Weg, um meine boolean mit Tkinter-Schaltflächen zu aktualisieren?
Momentan kann ich meinem Bool innerhalb meines def
s keinen Wert zuweisen, was mich davon abhält, eine zweite Nummer einzugeben und eventuell Funktionen auszuführen. Die letzte Zeile von commandButtonPress()
ist, wo die Dinge rutschen auf und vor der Herstellung whichNum
ein list
Ich war immer:
Variable vor der Zuweisung referenziert
Ich habe versucht, sowohl direkte Zuordnung als auch mit remove()
und append()
. Die Tasten 1-9 verwenden den gleichen Codeblock, und ich habe die Dezimalzahl nicht berücksichtigt, weil ich nicht gedacht habe, dass dies zur Lösung dieses Problems notwendig wäre.
Ich weiß nichts davon ist elegant und das meiste wäre viel besser, wenn ich eine Klasse implementieren würde, aber ich bin neu und versuche, die Dinge herauszufinden und habe noch keine objektorientierte Programmierung in Python gemacht.
from tkinter import *
def buttonOne(whichNum):
count = 0
number = ""
try:
if whichNum == False and num1[0] != "0":
num1.append("1")
while count < len(num1):
number = number + str(num1[count])
count += 1
screen["text"] = number
elif whichNum == True and num2[0] != "0":
num2.append("1")
while count < len(num2):
number = number + str(num2[count])
count += 1
screen["text"] = number
except:
if whichNum == False:
num1[0] = "."
else:
num2[0] = "."
number = "0."
screen["text"] = number
def commandButtonPress(symbol, whichNum):
if whichNum == False:
if len(operator) > 0 and operator[0] == "+":
operator.remove("+")
if len(num1) > 0:
operator.append(symbol)
whichNum[0] = True
def main():
window = Tk()
window.title("Calculator")
window.geometry("250x305")
num1 = []
num2 = []
operator = []
whichNum = [False]
global screen
screen = Label(text="0", height = 5, width = 30)
screen.pack(side = LEFT, expand=False, anchor = N, padx=[5, 5])
button1 = Button(text="1", command = lambda: buttonOne(whichNum[0]))
button1.grid(column=0, row=2)
button11 = Button(text="+", command = lambda: commandButtonPress("+", whichNum[0]))
button11.grid(column=3, row=2)
window.mainloop()
main()
Bitte [erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve). Wie es ist, entmutigen Sie Menschen, Ihnen zu helfen, da Ihre Frage viel einfacher gestellt werden kann. – Nae
Versuchen Sie, 'whichNum = None' außerhalb aller Funktionen zu definieren und fügen Sie' global whichNum' allen Funktionen als erste Zeile hinzu. – Nae
Ich analysierte es, aber ich werde das auch versuchen, danke. –