User interface 计算器图形用户界面&x27;问题';
这是我的计算器GUI,当我运行它时,我不断得到这个错误代码 Tkinter回调中的异常User interface 计算器图形用户界面&x27;问题';,user-interface,User Interface,这是我的计算器GUI,当我运行它时,我不断得到这个错误代码 Tkinter回调中的异常 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.gr
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()
在这里,您可以设置display.insert
到(END,“=”+result)
,这是一个元组
然后,稍后尝试将其作为函数调用
try:
result = str(eval(display.get()))[0:10]
display.insert = (END, "=" + result)
except:
display.insert = (END, "----> ERROR" )
这将导致TypeError:“tuple”对象不可调用
,因为您正试图“调用”该tuple
你可能是有意的
display.insert(END, key)
谢谢,抱歉@Tim Castelijns
display.insert(END, key)
try:
result = str(eval(display.get()))[0:10]
display.insert(END, "=" + result)
except:
display.insert(END, "----> ERROR" )