无法从Tkinter输入框中返回值-需要将输入值从一个脚本传递到另一个脚本

时间:2019-10-01 09:42:12

标签: python python-3.x tkinter tkinter-entry

我正准备拉头发-尝试了所有我能想到的事情来做看起来很简单的事情...

我需要有一个输入框,其中包含一个变量,该变量返回到代码中,并且可以在整个脚本中用作变量。我实际上需要导入此脚本,并在另一个脚本的代码中使用它。

此刻,我知道Submit按钮正在调用get_data()函数,因为使用'print'将显示输入的密码。但是使用return将其返回到父函数,然后返回该值并打印主函数的输出将不会返回任何结果。

谢谢

from tkinter import *

def get_params():

    def get_data():
        pw = pwentry_enter.get()
        return pw

    window = Tk()

    headFrame = Frame(window)
    headFrame.grid(row=0, pady=6)
    header = Label(headFrame, text="Input Password", font=(f1, 20))
    header.grid(column=0, row=0, columnspan=2, sticky="w")
    mainFrame = Frame(window, bg="#1B2230")
    mainFrame.grid(row=1, pady=6)

    raw_password = StringVar()
    pwentry_enter=Entry(mainFrame, width=30, font=(f2,10), show="*", textvariable=raw_password)
    pwentry_enter.pack()

    btnFrame = Frame(window)
    btnFrame.grid(row=2, pady=6)

    submit_btn = Button(btnFrame, text='Submit', command=get_data, width=10, bg="#DB4158", fg="black", font=(f2, 20))
    submit_btn.grid(column=1, row=0)
    quit_btn = Button(btnFrame, text='Quit', command=window.destroy, width=10, bg="#DB4158", fg="black", font=(f2, 20))
    quit_btn.grid(column=0, row=0)

    window.mainloop()

    a = get_data()
    return a

1 个答案:

答案 0 :(得分:1)

不要在get_data()中添加return并在单击提交按钮时使用全局变量来存储密码,而在单击退出按钮时则使用全局变量来存储密码。 您正在破坏窗口后尝试读取Entry的数据。

from tkinter import *

pw = ''
def get_params():
    global pw
    def get_data():
        global pw
        pw = pwentry_enter.get()

    window = Tk()

    headFrame = Frame(window)
    headFrame.grid(row=0, pady=6)
    header = Label(headFrame, text="Input Password", font=(f1, 20))
    header.grid(column=0, row=0, columnspan=2, sticky="w")
    mainFrame = Frame(window, bg="#1B2230")
    mainFrame.grid(row=1, pady=6)

    raw_password = StringVar()
    pwentry_enter=Entry(mainFrame, width=30, font=(f2,10), show="*", textvariable=raw_password)
    pwentry_enter.pack()

    btnFrame = Frame(window)
    btnFrame.grid(row=2, pady=6)

    submit_btn = Button(btnFrame, text='Submit', command=get_data, width=10, bg="#DB4158", fg="black", font=(f2, 20))
    submit_btn.grid(column=1, row=0)
    quit_btn = Button(btnFrame, text='Quit', command=window.destroy, width=10, bg="#DB4158", fg="black", font=(f2, 20))
    quit_btn.grid(column=0, row=0)

    window.mainloop()

    return pw
相关问题