2014-06-19 110 views
-1
from tkinter import* 

window = Tk() 
window.title("T Main") 

top_row = Frame(window) 
top_row.grid(row=0, column=0, columnspan=2, sticky = N) 

display = Entry(top_row, width=45, bg = "light green") 
display.grid() 

def click(): 
    display.insert(END, "1") 

Button(window, text="1", width=5, command=click).grid(row=1, column=0) 

num_pad = Frame(window) 
num_pad.grid(row=1, column=0, sticky=W) 

num_pad_list = [ 
    '7','8','9', 
    '4','5','6', 
    '1','2','3', 
    '0','.','=', 
    ] 

r = 0 
c = 0 
for buttontext in num_pad_list: 
    Button(num_pad, text=buttontext, width=5, command=click).grid(row=r, column=c) 
    c = c+1 
    if c > 2: 
     c = 0 
     r = r+1 


operator = Frame(window) 
operator.grid(row=1, column=1, sticky=E) 

operator_list = [ 
    '+','-', 
    '*','/', 
    '(',')', 
    'C', 
    ] 

r = 0 
c = 0 
for buttontext in operator_list: 
    Button(operator, text=buttontext, width=5, command=click).grid(row=r, column=c) 
    c = c+1 
    if c > 1: 
     c = 0 
     r = r+1 



def click(key): 
     if key=="=": 
      try: 
        result = str(eval(display.get()))[0:10] 
        display.insert = (END, "=" + result) 
      except: 
        display.insert = (END, "----> ERROR") 


     elif key == "C": 
      display.delete(0, END) 

     else: 
      display.insert(END, key) 




r = 0 
c = 0 
for buttontext in num_pad_list: 
    def cmd(x=buttontext): 
     click(x) 
    Button(num_pad, text=buttontext, width=5, command=cmd).grid(row=r, column=c) 
    c = c+1 
    if c > 2: 
     c = 0 
     r = r+1 


r = 0 
c = 0 
for buttontext in operator_list: 
    def cmd(x=buttontext): 
     click(x) 
    Button(operator, text=buttontext, width=5, command=cmd).grid(row=r, column=c) 
    c = c+1 
    if c > 1: 
     c = 0 
     r = r+1 





window.mainloop() 

這是我的計算器界面,我不斷收到此錯誤代碼時,我在 異常Tkinter的回調計算器GUI「問題」

Traceback (most recent call last): 
    File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__ 
    return self.func(*args) 
    File "C:/Users/Mark/Desktop/practise1.py", line 92, in cmd 
    click(x) 
    File "C:/Users/Mark/Desktop/practise1.py", line 71, in click 
    display.insert(END, key) 
TypeError: 'tuple' object is not callable 
+0

謝謝,對不起@Tim Castelijns – user3525198

回答

0
try: 
    result = str(eval(display.get()))[0:10] 
    display.insert = (END, "=" + result) 
except: 
    display.insert = (END, "----> ERROR") 

這裏運行它,你設置display.insert(END, "=" + result)這是元組

然後稍後嘗試將其稱爲函數

display.insert(END, key) 

其中給出TypeError: 'tuple' object is not callable,因爲你正試圖 '呼' 的元組

你可能爲了做這個

try: 
    result = str(eval(display.get()))[0:10] 
    display.insert(END, "=" + result) 
except: 
    display.insert(END, "----> ERROR")