繁体   English   中英

Python,Tkinter登录框,无法全局设置用户名和密码?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM