Python Tkinter输入框始终为空?

Python Tkinter输入框始终为空?,python,tkinter,tkinter-entry,Python,Tkinter,Tkinter Entry,所以我正试图编写一个程序,根据用户输入更新数据库。该程序首先允许用户使用用户名和密码登录,如果成功验证,则用户可以在四个选项中进行选择:put/post/get/delete。我遇到的问题是无法从输入框中获取用户输入。(我在下面输入了一小段代码) 主要问题是,当用户试图在输入框中输入特定讲师的ID时,当我将ID变量传递给函数make_get_call(讲师ID)时,讲师ID始终为空。起初我认为它与延迟有关,例如主循环部分,但我确保将.get()放在一个方法中,以便它应该在主循环之后执行。我还尝试

所以我正试图编写一个程序,根据用户输入更新数据库。该程序首先允许用户使用用户名和密码登录,如果成功验证,则用户可以在四个选项中进行选择:put/post/get/delete。我遇到的问题是无法从输入框中获取用户输入。(我在下面输入了一小段代码)


主要问题是,当用户试图在输入框中输入特定讲师的ID时,当我将ID变量传递给函数make_get_call(讲师ID)时,讲师ID始终为空。起初我认为它与延迟有关,例如主循环部分,但我确保将.get()放在一个方法中,以便它应该在主循环之后执行。我还尝试将id声明为全局变量,但也不起作用。任何帮助都将不胜感激

对不起,我真的仔细分析了你的代码

首先,我真的建议使用类而不是全局变量。试试这段代码,它应该是应用程序其余部分的良好开端

from tkinter import *
class App(Frame):
    def __init__(self, master):
        super().__init__(master)
        self.master = master
        self.grid(sticky = N+E+S+W)
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1) 
        self.createWidgets()

    def createWidgets(self):
        usernameLabel = Label(self.master, text = "User Name").grid(row= 0, column=3)
        self.username = StringVar()
        usernameEntry = Entry(self.master, textvariable = self.username).grid(row = 0, column=4)

        passwordLabel = Label(self.master,text="Password").grid(row=1, column=3)  
        self.password = StringVar()
        passwordEntry = Entry(self.master, textvariable=self.password, show='*').grid(row=1, column=4)  

        # validateLogin = partial(validateLogin, username, password)

        #   login button
        loginButton = Button(self.master, text="Login", command=self.validateLogin).grid(row=4, column=3)  




    # Function to validate if user inputed the right username
    def validateLogin(self):
        global login
        print("Username Entered :", self.username.get())
        print ("Password Entered: ", self.password.get())
        data = {"username": self.username.get(), "password": self.password.get()}


#THe GUI
root = Tk()
root.geometry('400x150')
root.title('Login Form')
tkWindow = App(root)


# login = False


tkWindow.mainloop()

阅读@stovfl我想根据用户的不同弹出和消失多个不同的窗口input@anonymous_cs_coder为此,您可以使用更多的顶级小部件。@anonymous:请仔细阅读,谢谢,它奏效了!
from tkinter import *
class App(Frame):
    def __init__(self, master):
        super().__init__(master)
        self.master = master
        self.grid(sticky = N+E+S+W)
        self.grid_rowconfigure(0, weight=1)
        self.grid_columnconfigure(0, weight=1) 
        self.createWidgets()

    def createWidgets(self):
        usernameLabel = Label(self.master, text = "User Name").grid(row= 0, column=3)
        self.username = StringVar()
        usernameEntry = Entry(self.master, textvariable = self.username).grid(row = 0, column=4)

        passwordLabel = Label(self.master,text="Password").grid(row=1, column=3)  
        self.password = StringVar()
        passwordEntry = Entry(self.master, textvariable=self.password, show='*').grid(row=1, column=4)  

        # validateLogin = partial(validateLogin, username, password)

        #   login button
        loginButton = Button(self.master, text="Login", command=self.validateLogin).grid(row=4, column=3)  




    # Function to validate if user inputed the right username
    def validateLogin(self):
        global login
        print("Username Entered :", self.username.get())
        print ("Password Entered: ", self.password.get())
        data = {"username": self.username.get(), "password": self.password.get()}


#THe GUI
root = Tk()
root.geometry('400x150')
root.title('Login Form')
tkWindow = App(root)


# login = False


tkWindow.mainloop()