如何从 tkinter 中的输入框访问包含输入的变量并在另一个模块中使用它?

How to access a variable containing input from entry box in tkinter and use it in another module?

如何访问包含来自 tkinter 输入框的用户输入的变量? 我想在另一个模块中使用输入。我很难尝试这样做,因为它在一个函数中,我在网上找不到任何答案。

我有两个 Python 文件:

gui.py

from tkinter import *

window = Tk()

entry = Entry(window)
entry.pack()

def get_input():
    user_input = entry.get()

btn = Button(window, text='Get Entry Input', command=get_input)
btn.pack()

window.mainloop()

这是我的第二个 Python 文件,我想在其中使用 user_input.

main.py

import gui

show_user_input = gui.user_input
print(show_user_input)

# Obviously this method wouldn't work but I don't know what to do.
# Please help

这将允许您在按下按钮时从另一个模块调用函数并传递输入框的值。

请注意,我们需要解决一个小问题。 command 参数需要一个没有参数的函数。我们可以使用 lambda 函数来解决这个问题。 lambda 函数是一种匿名函数,可以有 0 到多个参数,但必须只包含一个表达式。

我们使用lambda:来表示我们的函数没有参数。 lambda x: 将是一个具有一个参数 x 的函数。增加更多的参数也是一样的思路。我们需要在按下按钮时执行的表达式只是调用 main.show_input,这就是完成的。我还添加了 gui.py 的无 lambda 版本。它可能有助于了解正在发生的事情。

main.py

def show_input(x):
    print(x)

gui.py

from tkinter import *
import main

window = Tk()

entry = Entry(window)
entry.pack()

btn = Button(window, text='Get Entry Input', command=lambda: main.show_input(entry.get()))
btn.pack()

window.mainloop()

gui.py 没有 lambda

from tkinter import *
import main

def call_show_input():
    main.show_input(entry.get())

window = Tk()

entry = Entry(window)
entry.pack()

btn = Button(window, text='Get Entry Input', command=call_show_input)
btn.pack()

window.mainloop()