【问题标题】:The code is giving me syntax error even though I couldn't find any [closed]即使我找不到任何 [关闭],代码也给了我语法错误
【发布时间】: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。

标签: python tkinter syntax


【解决方案1】:
button = Button(frame, text='Calculate', padx = 50, pady = 3, command=calculation()

这里似乎没有右括号。会不会是这个问题?

【讨论】:

  • 您是回答问题的人。 可以吗?
  • 天哪!非常感谢。但是为什么错误显示的是不同的行。
  • @AlexMRTY 参数列表可以分成多行(也就是说,括号会导致隐式续行)。如果在EN1 之前有一个逗号,那么解析器将把它看作是从上一行开始调用Button 的完全有效的关键字参数。 是实际的语法错误:缺少逗号。您打算完成调用表达式(但没有)的事实是编译器无法捕获的语义错误。
猜你喜欢
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
相关资源
最近更新 更多