【发布时间】:2020-04-29 13:26:15
【问题描述】:
我收到一个我找不到的语法错误。就在不久前,它工作得很好,但后来它突然开始给我错误,即使我从未改变那行代码中的任何东西。你能看看吗?
from tkinter import*
root = Tk()
# Variables
HEIGHT = 320
WIDTH = 500
# Functions:
def calculation():
global last
lst = []
e1 = En1.get()
e2 = En2.get()
e3 = En3.get()
e4 = En4.get()
e5 = En5.get()
lst.extend([e1,e2,e3,e4,e5])
print (list)
# Window:
canvas = Canvas(root, height = HEIGHT, width = WIDTH)
canvas.pack()
frame = Frame(root)
frame.place(relx = 0.1, rely = 0.1, relheight = 0.8, relwidth = 0.8)
# Widgets:
button = Button(frame, text='Calculate', padx = 50, pady = 3, command=calculation()
# Entries:
En1 = Entry(frame, bg = 'white')
En2 = Entry(frame, bg = 'white')
En3 = Entry(frame, bg = 'white')
En4 = Entry(frame, bg = 'white')
En5 = Entry(frame, bg = 'white')
# Label:
lb1 = Label(frame, text='How much does person A weight:', padx = 10, pady = 5, anchor = 'w')
lb2 = Label(frame, text='How much does person B weight:', padx = 10, pady = 5, anchor = 'w')
lb3 = Label(frame, text='How long is the chair:', padx = 10, pady = 5, anchor = 'w')
lb4 = Label(frame, text='How far is person A sitting from left side', padx = 10, pady = 5)
lb5 = Label(frame, text='How far is person B sitting from right side', padx = 10, pady = 5)
# Widget's position:
button.grid(row = 1, column = 1)
# Entries:
En1.grid(row = 1, column = 0)
En2.grid(row = 3, column = 0)
En3.grid(row = 5, column = 0)
En4.grid(row = 7, column = 0)
En5.grid(row = 9, column = 0)
# Labels:
lb1.grid(row = 0, column = 0)
lb2.grid(row = 2, column = 0)
lb3.grid(row = 4, column = 0)
lb4.grid(row = 6, column = 0)
lb5.grid(row = 8, column = 0)
# Result:
result = Label(frame, bg = 'white')
result.grid(row = 2, column = 1, rowspan=3)
root.mainloop()
如果我运行此代码,它会给我以下错误。
File ".\Second.py", line 32
En1 = Entry(frame, bg = 'white')
^
SyntaxError: invalid syntax
顺便说一句,给我这个错误的不仅仅是第 32 行。我试图注释掉有错误的行,似乎代码中的每个小部件都给了我相同的语法错误。我试图找到它,但我找不到。
我是 python 的新手,所以很安静,可能我犯了一些我不知道的愚蠢错误。
【问题讨论】:
-
button = Button(frame, text='Calculate', padx = 50, pady = 3, command=calculation()缺少右括号)。传递给命令时也不应调用该函数,因此该行应为:button = Button(frame, text='Calculate', padx = 50, pady = 3, command=calculation) -
通常,缺少括号会导致下一行出现语法错误(因为 python 将下一行解释为同一函数调用的一部分(或在这种情况下为类实例化) )
-
你
calculation函数也有点糊涂,因为你有global last但在函数之外没有last,然后你print(list)要么给你<class 'list'>这个,或者如果你破坏了内置的list会打印出来,但据我所知,这与计算功能无关。 -
哦。谢谢我明白了。
-
是的,这个函数搞砸了,因为我从另一个代码中复制了它。目前我只是在尝试制作 GUI。