错误?无法弄清楚

时间:2014-03-31 21:46:31

标签: python error-handling tkinter

我正在创建一个tkinter程序并遇到了这个奇怪的错误。这是我的代码:

from Tkinter import *   
def get_info(key):     
    pass   
def create_new():  
    create = Toplevel(root)
    create.title('Create A New Contact')
    Label(create, text='Name: ').grid(row=0, sticky=W+E)
    name = Entry(create, width=8).grid(row=1, sticky=W+E)
    Label(create, text='Address(ex. 1111 Main St, MyCity, Anystate 12345): ', wrapLength=1).grid(row=2, sticky=W+E)
    address = Entry(create, width=8).grid(row=3, sticky=W+E)
def access():
    access_window = Toplevel(root)
    access_window.title("Access a Contact")
    Label(access_window, text=“Enter a first name: ‘).grid(row=0, sticky=‘W+E’)#Error here
    access_key = Entry(access_window, width=8).grid(row=0, sticky='W+E')
    Button(access_window, text="Submit", command=lambda: get_info(access_key.get('0.0', 'end-1c'))).grid(row=2, sticky='W+E')
root = Tk()
root.title('Address Book')
button1 = Button(root, text="Create New", command=create_new).grid(row=0, column=0)
button2 = Button(root, text=“Access Person”, command=access).grid(row=0, column=1)

控制台说:

Error: EOL while scanning string literal.

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

此行包含无效字符:

Label(access_window, text=“Enter a first name: ‘).grid(row=0, sticky=‘W+E’)
#                       --^                  --^                   --^ --^

这一个是这样的:

button2 = Button(root, text=“Access Person”, command=access).grid(row=0, column=1)
#                         --^           --^

在Python中,字符串文字只能用正常的撇号'或正常的引号"括起来。


要解决此问题,请将每个替换为"

Label(access_window, text="Enter a first name: ").grid(row=0, sticky="W+E")

button2 = Button(root, text="Access Person", command=access).grid(row=0, column=1)

此外,每个Tkinter小部件的grid方法都可以就地工作(它总是返回None)。因此,您应该在自己的行上调用它:

button2 = Button(root, text="Access Person", command=access)
button2.grid(row=0, column=1)

答案 1 :(得分:2)

您需要使用相同类型的引号来标记字符串的开头和结尾。

因此,您突出显示的行需要使用一致的引号 - 您不应混合使用单引号和双引号。你的行需要看起来像这样

Label(access_window, text="Enter a first name: ").grid(row=0, sticky=‘W+E’)

或者这个

Label(access_window, text='Enter a first name: ').grid(row=0, sticky=‘W+E’)

不是这样,你以双引号开头并以单引号结尾

Label(access_window, text=“Enter a first name: ‘).grid(row=0, sticky=‘W+E’)