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