从 tkinter 表单返回一个值

JJ_*_*JJ_ 4 tkinter python-3.x

我正在使用需要要求用户输入的代码,使用 tkinter 窗口(我没有在代码的其他部分使用 tkinter)。

我的问题是,我只需要使用 tkinter 窗口在按下表单上的“确定”按钮后返回一个值,这也会关闭表单。到目前为止,我可以让它工作的唯一方法是使用全局变量。我已经搜索了其他解决方案,但它们要么不返回值(它们只是打印它),要么不允许传递提示文本。

如果您能提供帮助,请先致谢。

from tkinter import *

def input_text(prompt):

    def ok():
        global ret
        ret = entry.get()
        master.destroy()

    master = Tk()
    lbl = Label(master, text=prompt)
    lbl.pack()
    entry = Entry(master)
    entry.pack()

    entry.focus_set()

    butt = Button(master, text = "OK", width = 10, command = ok)
    butt.pack()

    mainloop()

print("I am here!")
ret=""
input_text("Enter something")

print("ret is:", ret)
Run Code Online (Sandbox Code Playgroud)

JJ_*_*JJ_ 6

经过一晚良好的睡眠后,我解决了这个问题:-)

解决方案是创建一个类并通过属性返回响应。这是存档的代码......以防万一有人有类似的问题。

from tkinter import *

class InputForm():
    def __init__ (self, prompt):
        self.prompt = prompt
        self.response = ""

        def ok():
            self.response = entry.get()
            master.destroy()

        master = Tk()
        lbl = Label(master, text=self.prompt)
        lbl.pack()
        entry = Entry(master)
        entry.pack()

        entry.focus_set()

        butt = Button(master, text = "OK", width = 10, command = ok)
        butt.pack()

        mainloop()

abc = InputForm("Enter something").response

print("returned value is:", abc)
Run Code Online (Sandbox Code Playgroud)