2014-06-19 199 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")