from tkinter import *
class Mybuttons():
def __init__(self, master):
self.frm= Frame(master)
self.frm.grid()
self.count= 0
self.mybuttons()
self.base=0
self.exponent=0
self.result=0
def doonebase(self):
self.base+=1
self.btn1['text']= 'the base is ' + str(self.base)
def dooneexponent(self):
self.exponent+=1
self.btn2['text']= 'the base is ' + str(self.exponent)
def getresult(self):
self.result= self.base * self.exponent
self.btn3['text']= 'the answer is ' + str(self.result)
def mybuttons(self):
self.btn1=Button(self.frm)
self.btn1['text']='base'
self.btn1['command']=doonebase
self.btn2=Button(self.frm)
self.btn2['text']='exponent'
self.btn2['command']=dooneexponent
self.btn3=Button(self.frm)
self.btn3['text']='result'
self.btn3['command']=getresult
self.btn1.grid(row=0, column=0)
self.btn2.grid(row=0, column=2)
self.btn3.grid(row=1, column=1)
def try1():
root= Tk()
root.title('Compute an exponent!')
root.geometry("200x300")
threebuttons= Mybuttons(root)
root.mainloop()
try1()
definiert Wenn ich dies laufe ich den Fehler:Tkinter Taste nicht
File "/home/goofy/Documents/lab10-1.py", line 23, in mybuttons
self.btn1['command']=doonebase
NameError: name 'doonebase' is not defined
ein Fenster produziert, aber die Tasten sind nicht da.
Wenn ich jede der Zeilen auskommentieren, die den Funktionen den 'Befehl' zuweisen, wird der Code ausgeführt, und die Schaltflächen werden angezeigt, aber sie bewirken nichts. Ich hatte versucht, jede der Funktionen vor dem Konstruktor zu definieren und versuchte auch nach der def mybuttons(self)
. Ich kann nicht herausfinden, warum der Code die definierten Funktionen nicht sieht.
Sie tun müssen, um 'self.doonebase', nicht' doonebase'. Sie müssen das Gleiche für 'dooneexponent' und' getresult' tun. – zondo
@zondo Vielen Dank! Das hat es total repariert. Ich bin mir nicht sicher, wie ich dir diese Antwort geben soll, weil es mein erster Beitrag ist, aber danke !!! –
@zondo - können Sie dies als Antwort schreiben - es könnte jemand anderem helfen. –