【问题标题】:Error? Can’t Figure Out错误?想不通
【发布时间】:2014-03-31 21:46:31
【问题描述】:

我正在创建一个 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.

我该如何解决这个问题?

【问题讨论】:

    标签: python error-handling tkinter


    【解决方案1】:

    此行包含无效字符:

    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)
    

    【讨论】:

    • 我不同意这一点 - 但在他的问题中请注意问题出在他的评论中表示的 Label(access_window...) 行
    • @dannymilsom - 哦,我没看到他也在那儿做。让我编辑我的答案。
    【解决方案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’)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      相关资源
      最近更新 更多