Python 为什么模块tk不可调用?

Python 为什么模块tk不可调用?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我的小登录窗口有问题。我想为我的一个程序设置一个小的登录窗口,并用一个按钮检查输入。程序运行正常,直到我的计算机想要启用按钮: TypeError:“Tk”对象不可调用 为什么会这样?怎么了?所有命令都正确吗 import tkinter import os def login(): c= tkinter.Entry.get(input1) if c == "admin": a = tkinter.Entry.get(input2) if

我的小登录窗口有问题。我想为我的一个程序设置一个小的登录窗口,并用一个按钮检查输入。程序运行正常,直到我的计算机想要启用按钮:

TypeError:“Tk”对象不可调用

为什么会这样?怎么了?所有命令都正确吗

    import tkinter
import os

def login():
    c= tkinter.Entry.get(input1)
    if c == "admin":
        a = tkinter.Entry.get(input2)
        if a == "1234":
            os.system('SpambotV1')
        else:
            print("hi")
    else:
        print("Cancled")


# Hauptprogramm

login=tkinter.Tk()
login.title("login")
login.config(background="blue")

photo = tkinter.PhotoImage(file="/Users/Hannes/Desktop/Spambot/Roboter.gif")
w = tkinter.Label(login,image=photo)
w.grid(row=0,column=1,padx=0,pady=0)

#Loginframe

frame1=tkinter.Frame(login)
frame1.grid(row=0,column=0,padx=5,pady=5)

#loginlabel

text1=tkinter.Label(frame1,text="Please login", bg="red")
text1.grid(row=0,column=0,padx=5,pady=5)

#Input1

input1=tkinter.Entry(frame1,width=12)
input1.grid(row=2,column=0,padx=5,pady=5)


#text 2
text2=tkinter.Label(frame1,text="Username",bg="red")
text2.grid(row=1,column=0,padx=5,pady=5)

#text 3
text3=tkinter.Label(frame1,text="Password",bg="red")
text3.grid(row=3,column=0,padx=5,pady=5)

#Entry 2

input2=tkinter.Entry(frame1,width=12)
input2.grid(row=4,column=0,padx=5,pady=5)

#knopf
knopf=tkinter.Button(frame1,text="Login",bg="red",command=login())
knopf.grid(row=4,column=0,padx=10,pady=10)

通过创建一个名为login的函数,然后创建一个具有相同名称的变量,会在代码中引起冲突。尝试将其重命名为
submit
或其他名称。您将按钮的命令指定为
login()
,但python不记得login函数,它只记得您创建的窗口变量,它是一个Tk对象,不可调用。因此,您应该将
login()
函数的名称更改为
submit()

还要记住改变:

knopf=tkinter.Button(frame1,text="Login",bg="red",command=login())
致:

并按照@PM 2Ring的建议拆除支架 编辑:
让我们对@Rawing也发现了这一点表示赞赏。很抱歉我没有看到注释

通过创建一个名为login的函数,然后创建一个同名变量,会导致代码冲突。尝试将其重命名为
submit
或其他名称。您将按钮的命令指定为
login()
,但python不记得login函数,它只记得您创建的窗口变量,它是一个Tk对象,不可调用。因此,您应该将
login()
函数的名称更改为
submit()

还要记住改变:

knopf=tkinter.Button(frame1,text="Login",bg="red",command=login())
致:

并按照@PM 2Ring的建议拆除支架 编辑:
让我们对@Rawing也发现了这一点表示赞赏。很抱歉我没有看到评论

您有一个名为
login
的函数,您的窗口变量也被称为
login
。重命名其中一个。顺便说一句,将tkinter导入为tk是一种常见做法。这样,您可以使用简短的引用,如
tk.tk()
tk.Label
等。如果下面的答案解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这有两件事。它让每个人都知道你的问题已经解决到令你满意的程度,并让帮助你的人相信你的帮助。有关详细说明,请参阅。您有一个名为
login
的函数,您的窗口变量也称为
login
。重命名其中一个。顺便说一句,将tkinter导入为tk是一种常见做法。这样,您可以使用简短的引用,如
tk.tk()
tk.Label
等。如果下面的答案解决了您的问题,您应该接受它(单击相应答案旁边的复选标记)。这有两件事。它让每个人都知道你的问题已经解决到令你满意的程度,并让帮助你的人相信你的帮助。请参阅以获取完整的解释。