Python 全局名称tkinter未定义?

Python 全局名称tkinter未定义?,python,tkinter,Python,Tkinter,下面显示的是tkinter登录窗口的代码,我试图在屏幕顶部显示一个徽标,但执行此操作时出现此错误: NameError: global name 'tkinter' is not defined 这是我的全部代码: *原始代码在这里 谢谢 编辑后的代码(删除tkinter.): 这是因为您告诉tkinter以*的形式导入,这会将所有内容导入命名空间,而不管名称如何 在创建实例(如PhotoImage开始时,请丢失tkinter.),一切都将正常工作 但是,我强烈建议您将导入更改为import

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

NameError: global name 'tkinter' is not defined
这是我的全部代码:

*原始代码在这里

谢谢

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


这是因为您告诉tkinter以*的形式导入,这会将所有内容导入命名空间,而不管名称如何

在创建实例(如
PhotoImage
开始时,请丢失
tkinter.
),一切都将正常工作


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

这是因为您告诉tkinter导入为*,这会将所有内容导入命名空间,而不管其名称如何

在创建实例(如
PhotoImage
开始时,请丢失
tkinter.
),一切都将正常工作


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

您已经使用
*
导入了
tkinter
中的所有内容。因此,您不需要执行
tkinter.something
。仅供参考,使用模块导入中的
*
不是一种好做法。我会试试看,谢谢!有关导入模块的不同方法及其优缺点,请参见问题/答案。DavidG和他所链接的问题。“星型”导入使代码更难阅读。它们会将所有这些名称转储到您的命名空间中。FWIW,Tkinter星形导入在Python3中引入136个名称,在Python2中引入175个名称。您已经使用
*
导入了Tkinter中的所有内容。因此,您不需要执行
tkinter.something
。仅供参考,使用模块导入中的
*
不是一种好做法。我会试试看,谢谢!有关导入模块的不同方法及其优缺点,请参见问题/答案。DavidG和他所链接的问题。“星型”导入使代码更难阅读。它们会将所有这些名称转储到您的命名空间中。FWIW,Tkinter star导入在Python 3中引入136个名称,在Python 2中引入175个名称。感谢您推广使用
import Tkinter as tk
。该窗口现在确实打开了,但是,图像没有显示,只是一个空白,请参见上面我编辑的代码。如果您无法理解,这是一个单独的问题,那么你应该提出另一个问题。这就是说,我注意到的第一件事是
photo=PhotoImage(file=“logo.gif”)
将被垃圾收集,因此将该行更改为
canvas.photo=PhotoImage(file=“logo.gif”)
,并将以下内容更改为
canvas.create_image(0,0,image=canvas.photo)
感谢您推广使用
import tkinter as tk
。现在窗口确实打开了,但是图像没有显示,只是显示在空白处,请参见上面我编辑的代码。这是一个单独的问题,如果您无法理解,那么您应该打开另一个问题。这就是说,我注意到的第一件事是
photo=PhotoImage(file=“logo.gif”)
将被垃圾收集,因此将该行更改为
canvas.photo=PhotoImage(file=“logo.gif”)
,并将以下内容更改为
canvas.create_image(0,0,image=canvas.photo)
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()