下面显示的是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()
答案 0 :(得分:2)
这是因为你告诉tkinter导入为*,它将所有内容导入命名空间,无论其名称如何。
在创建tkinter.
等实例的开头丢失PhotoImage
,一切都会有效。
但是,我强烈建议您改为将导入更改为import tkinter as tk
,这样您就可以指定tk.Label
,tk.PhotoImage
等等,而您却不会担心对象名称冲突或必须在使用每个Object之前写出完整的tkinter
。