从tkinter表单返回值

时间:2018-08-14 01:20:59

标签: python-3.x tkinter

我使用的代码需要使用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)

1 个答案:

答案 0 :(得分:0)

一夜安眠后,我解决了这个问题:-)

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

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)