我在这个网站上看到了一些帖子,其他一些涉及类似主题的帖子似乎并没有达到我想用的python v3的结果。我的目标是有一个弹出窗口,其中包含两个用户名和密码的输入框,然后我可以将其输出为名为username和password的变量,然后依次用于登录我已编写脚本的网站。我到目前为止的代码是:
from tkinter import *
def show_entry_fields():
print("Username: %s\nPassword: %s" % (e1.get(), e2.get()))
master = Tk()
Label(master, text="Username").grid(row=0)
Label(master, text="Password").grid(row=1)
e1 = Entry(master)
e2 = Entry(master)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Submit', command=show_entry_fields).grid(row=3, column=1, sticky=W, pady=4)
在按下提交并让这两行成为变量之后,我正在研究如何获取控制台中显示的输出?任何帮助或建议将不胜感激。提前谢谢,
詹姆斯
答案 0 :(得分:2)
您可以使用tkinter的变量:
username = StringVar()
password = StringVar()
然后在定义entrys时,添加参数textvariable
:
e1 = Entry(master, textvariable = username)
e2 = Entry(master, textvariable = password)
要从此变量中获取值,请在其上调用.get()
函数。
答案 1 :(得分:1)
我想你的问题是“如何在自毁窗口上访问?” - 你没有。
你在之前访问它它会自行销毁。
那是怎么回事? - 您将子项(弹出窗口)中的事件和事件绑定到父项,一旦触发了提交按钮,就会生成事件作为父母的通知,例如“我很快就会被销毁”(请参阅{{3 }})。一个非常重要的事情 - 窗口不能破坏自己,只要它应该返回一些东西。父母在从中检索数据后将其杀死。
你使用例如tkinter.StringVar
用于存储您的数据。
但是你的弹出窗口中没有它们,而是在你的父窗口小部件中,所以即使Entry小部件被破坏它们也能存活。
对于这种方法,请使用this question answered by Bryan Oakley for more info中的信息,但在施工期间将其传递给弹出窗口,作为父母内部存储的参数。
答案 2 :(得分:1)
您还需要使用lambda将参数发送到子例程。试试这个:
from tkinter import *
def show_entry_fields(v1, v2):
print("Username: %s\nPassword: %s" % (v1.get(), v2.get()))
if __name__ == "__main__":
master = Tk()
Label(master, text="Username").grid(row=0)
Label(master, text="Password").grid(row=1)
v1 = StringVar()
v2 = StringVar()
e1 = Entry(master, textvariable=v1)
e2 = Entry(master, textvariable=v2)
e1.grid(row=0, column=1)
e2.grid(row=1, column=1)
Button(master, text='Quit', command=master.quit).grid(row=3, column=0, sticky=W, pady=4)
Button(master, text='Submit', command=(lambda : show_entry_fields(v1, v2))).grid(row=3, column=1, sticky=W, pady=4)
master.mainloop()
更新:我想我应该像我讲道一样,所以我在主要部分添加了一个本地语境。