我正在创建一个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.
我该如何解决这个问题?
答案 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’)