2017-02-07 2 views
1

Ich bin neu bei Python und versuche einen Taschenrechner mit einem Taschenrechner von Texas Instruments als Inspiration für Funktionen und Funktionen zu verwenden. Momentan versuche ich einen Shift-Button zu erstellen, der den gesamten Text der Buttons in einen anderen Textsatz ändert. Zur Vereinfachung beim Testen arbeite ich mit nur einem Knopf und die anderen sind auskommentiert. Ich habe mein Programm ausgeführt und folgende Fehlermeldung erhalten: Traceback (letzter Aufruf zuletzt): Datei "/Users/ryanflynn/shCalctest.py", Zeile 18, in txt = root.StringVar() Datei "/ Library/Frameworks/Python.framework/Versions/3,6/lib/python3.6/tkinter/init Py“, Linie 2095 in getattr return getattr (self.tk, attr) Attribute: '_tkinter.tkapp' Objekt hat kein Attribut 'StringVar'Tkinter Taschenrechner mit wechselnden Texttasten

Dies ist mein Code:

from tkinter import * 
import time 

root = Tk() 
root.title('Calculator') 

mode = 0 

display = Entry(root) 
display.grid(row = 1, columnspan = 6) 


def txtupdate(mode): 
    a = ([1,2,3,4,5,6,7,8,9,0],[A,B,C,D,E,F,G,H,I,J]) 
    txt.set(a[mode]) 
    return 

txt = tk.StringVar() 
one = Button(root, variabletext = txt[0], command = lambda : print(txt)) 
txt.set([1,2,3,4,5,6,7,8,9,0]) 
one.grid(row = 2, column = 0) 
'''two = Button(root, text = '2', command = lambda : print('2')) 
two.grid(row = 2, column = 1) 
three = Button(root, text = '3', command = lambda : print('3')) 
three.grid(row = 2, column = 2) 
four = Button(root, text = '4', command = lambda : print('4')) 
four.grid(row = 3, column = 0) 
five = Button(root, text = '5', command = lambda : print('5')) 
five.grid(row = 3, column = 1) 
six = Button(root, text = '6', command = lambda : print('6')) 
six.grid(row = 3, column = 2) 
seven = Button(root, text = '7', command = lambda : print('7')) 
seven.grid(row = 4, column = 0) 
eight = Button(root, text = '8', command = lambda : print('8')) 
eight.grid(row = 4, column = 1) 
nine = Button(root, text = '9', command = lambda : print('9')) 
nine.grid(row = 4, column = 2) 
zero = Button(root, text = '0', command = lambda : print('0')) 
zero.grid(row = 5, column = 1)''' 
shift = Button(root, text = 'sft', command = txtupdate(1)) 
shift.grid(row = 2, column = 1) 


root.mainloop() 

Jede Hilfe wäre willkommen !!

+0

Könnten Sie eine Kopie des Fehlers geben? Normalerweise, wenn ein Fehler in einer Systemdatei auftaucht (in Ihrem Fall tkinter '__init __. Py' Datei), ist es normalerweise wegen eines Problems mit Argumenten in Ihrem Code. –

+0

Bitte wählen Sie eine Antwort oder einen Kommentar zu den Antworten, die nicht funktioniert haben. –

Antwort

1
  1. Sie importiert alles von tkinter - keine Notwendigkeit für tk.StringVar.
  2. variabletext = txt[0] - es ist textvariable und die Indizierung ist hier nicht erforderlich.
  3. ** a = ([1,2,3,4,5,6,7,8,9,0],[A,B,C,D,E,F,G,H,I,J]) - die Buchstaben gelten als Variablen, die nicht definiert sind. Sie können sie durch ['A','B','C','D','E','F','G','H','I','J'] ersetzen.

ändern diese beiden Linien:

txt = StringVar() 
one = Button(root, textvariable = txt, command = lambda : print(txt)) 
+0

Dies war sehr hilfreich, und der Fehler ging weg. Ich habe neue Probleme, zu denen ich einen neuen Beitrag machen werde, da sie sich nicht auf die Fragen beziehen, die hier gestellt oder beantwortet werden. Danke nochmal! –

Verwandte Themen