Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法从Tkinter输入框返回值-需要将输入值从一个脚本传递到另一个脚本_Python_Python 3.x_Tkinter_Tkinter Entry - Fatal编程技术网

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

Python 无法从Tkinter输入框返回值-需要将输入值从一个脚本传递到另一个脚本,python,python-3.x,tkinter,tkinter-entry,Python,Python 3.x,Tkinter,Tkinter Entry,我正准备把我的头发拔出来-我已经尝试了我能想象到的一切,做一些表面上看起来相当简单的事情 我需要有一个输入框,它接收一个变量,返回到代码中,可以在整个脚本中用作变量。我实际上需要导入这个脚本并在另一个脚本的代码中使用它 目前,我知道Submit按钮正在调用get_data()函数,因为使用“print”显示输入的密码。但是使用return,将其返回到父函数,然后返回该值并打印主函数的输出,不会返回任何结果 谢谢 from tkinter import * def get_params():

我正准备把我的头发拔出来-我已经尝试了我能想象到的一切,做一些表面上看起来相当简单的事情

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

目前,我知道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


不要在get_data()中添加return,在单击提交按钮时使用全局变量存储密码,在按下退出按钮时使用return。 您试图在销毁窗口后读取条目的数据

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

你能告诉我你在哪一行打印密码吗
a=get_data()
将在销毁窗口后执行。如果我将“return pw”更改为print(pw),并且如果我在最后打印(get_params()),则会输出密码。这是打印,因为您在单击submit按钮时调用函数。确实,但我需要返回密码,以便将其传递给另一个脚本。我无法在不打印的情况下以任何方式操作或显示它,这对我没有多大帮助。请不要在
get_data()
中添加return,并在单击提交按钮时使用全局变量存储密码,在按下退出按钮时使用return。请参考下面的代码,它可以完美地工作-非常感谢!这是因为缺少全局声明?不仅仅是因为全局声明,您还试图在破坏窗口后读取条目数据。不知道为什么在您执行程序时它没有导致错误如果它包含您添加、删除或更改的内容的描述,这个答案会更好。否则,我们必须逐行和逐字符地比较代码,以查看您所做的更改。