全局名称tkinter没有定义?

时间:2017-10-12 08:41:09

标签: python tkinter

下面显示的是tkinter登录窗口的代码,我试图在屏幕顶部显示一个徽标,但在执行此操作时出现此错误:

NameError: global name 'tkinter' is not defined

这是我的完整代码:

*原始代码在这里

由于

编辑后的代码(删除tkinter。):

from tkinter import *

root = Tk()

root.title("Speed Wars Login")

def createInterface():
    Label(root, text="Log in").grid(row=1, column=0)
    Label(root, text="Create Account").grid(row=1, column=3)
    #PLACE IMAGE
    canvas = Canvas(root)
    canvas.grid(row=0, column=2)
    photo = PhotoImage(file = "logo.gif")
    canvas.create_image(0, 0, image=photo)

    Label(root, text="Username").grid(row=2, column=0)
    Label(root, text="Password").grid(row=3, column=0)
    global usrnm
    global psswrd
    usrnm = Entry(root, width = 15)
    psswrd = Entry(root, show="*", width = 15)

    usrnm.grid(row=2, column=1)
    psswrd.grid(row=3, column=1)

def loginprint():
    print("Username: %s\nPassword: %s" % (usrnm.get(), psswrd.get()))

createInterface()

Button(root, text="Login", command = loginprint).grid(row=3, column=0)

root.mainloop()

1 个答案:

答案 0 :(得分:2)

这是因为你告诉tkinter导入为*,它将所有内容导入命名空间,无论其名称如何。

在创建tkinter.等实例的开头丢失PhotoImage,一切都会有效。

但是,我强烈建议您改为将导入更改为import tkinter as tk,这样您就可以指定tk.Labeltk.PhotoImage等等,而您却不会担心对象名称冲突或必须在使用每个Object之前写出完整的tkinter