[英]Python, Tkinter log in box, unable to make username and password global?
我的代码看起来像这样,我认为全局用户名和全局密码会起作用,而不是打印用户名/密码,而是打印类似于“ .41238472L”的内容。 我该如何解决? 谢谢
from Tkinter import *
global username
global password
root = Tk()
def getName():
root.destroy()
userLabel = Label(root, text="Enter Username")
username = Entry(root, bd=5)
pwLabel = Label(root, text="Enter Password" )
password = Entry(root, bd=5, show ='*')
submit = Button(root, text ="Submit", command = getName)
userLabel.pack()
username.pack()
pwLabel.pack()
password.pack()
submit.pack(side = BOTTOM)
root.mainloop()
print username
print password
小部件需要父级才能存在。 即使一个变量持有一个小部件实例,如果该小部件的父对象被销毁,您也不能使用其方法。 因此,销毁root
后将无法获得内容条目。 但是您可以将StringVar
绑定到Entry
并获取StringVar
内容。
from Tkinter import *
root = Tk()
nameVar = StringVar()
passVar = StringVar()
def getName():
root.destroy()
userLabel = Label(root, text="Enter Username")
username = Entry(root, bd=5, textvariable=nameVar)
pwLabel = Label(root, text="Enter Password" )
password = Entry(root, bd=5, textvariable=passVar, show ='*')
submit = Button(root, text ="Submit", command = getName)
userLabel.pack()
username.pack()
pwLabel.pack()
password.pack()
submit.pack(side = BOTTOM)
root.mainloop()
print nameVar.get()
print passVar.get()
您必须更改变量名称,因为现在在两个不同的事物上使用相同的名称。 然后,您可以将文本从条目复制到变量。
import Tkinter as tk
# --- functions ---
def get_name():
# inform function to use global variables instead of local one
global username
global password
# copy values
username = entry_username.get()
password = entry_password.get()
root.destroy()
# --- main ---
# global variable
username = None
password = None
# GUI
root = tk.Tk()
label_username = tk.Label(root, text="Enter Username")
entry_username = tk.Entry(root, bd=5)
label_password = tk.Label(root, text="Enter Password" )
entry_password = tk.Entry(root, bd=5, show='*')
submit = tk.Button(root, text="Submit", command=get_name)
label_username.pack()
entry_username.pack()
label_password.pack()
entry_password.pack()
submit.pack(side=tk.BOTTOM)
root.mainloop()
# result
print username
print password
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.