1
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()
當我運行此我得到的錯誤:Tkinter的按鈕沒有定義
File "/home/goofy/Documents/lab10-1.py", line 23, in mybuttons
self.btn1['command']=doonebase
NameError: name 'doonebase' is not defined
它產生一個窗口,但按鈕是不存在的。
當我註釋掉每個給函數賦予'command'的行時,代碼就會運行,按鈕出現,但它們什麼也不做。我曾嘗試在構造函數之前定義每個函數,並在def mybuttons(self)
之後嘗試。我似乎無法弄清楚爲什麼代碼沒有看到定義的功能。
你需要做的'self.doonebase',不'doonebase'。你需要爲'dooneexponent'和'getresult'做同樣的事情。 – zondo
@zondo非常感謝你!這完全解決了它。我不知道如何給你這個答案,因爲這是我的第一篇文章,但謝謝你! –
@zondo - 你可以寫這個答案 - 它可以幫助別人。 –