Tkinter商店输入框值作为其他文件的值

时间:2014-12-03 04:46:40

标签: python tkinter box tkinter-entry

这是我的第一个python个人项目。我想使用Tkinter创建一个窗口(GUARDIAN LOCATOR),要求用户在输入框中输入一个值(输入水手监护人)。程序的其余部分取决于用户在输入框中输入的内容,因为if / else语句会对水手监护人做出反应。

我遇到的问题是将在输入框中输入的内容存储为变量,以便在我的主文件中用于if / else语句。我可以将值打印到提示窗口,但我无法将其成功存储到全局变量。

我的Tkinter窗口在它自己的类中。

我已经根据stackoverflow中的类似问题尝试了很多不同的方法,但每次都会出错。这是我的基本代码仍会产生错误。

带有Tkinter窗口的类文件

class GuardianLocator:

def __init__(self, master):
    frame = Frame(master)
    frame.grid()
    master.title("GUARDIAN LOCATOR")

    self.locator_label = Label(frame, text="Which Sailor Guardian are you looking for?", width=40, height=2)
    self.locator_label.grid()

    self.entry = Entry(frame)
    self.entry.grid()

    self.button1 = Button(frame, text="Search", command=self.guardian_name, pady=2)
    self.button1.grid()

def guardian_name(self):
    print(self.entry.get())

和我的主要工作文件

root = Tk()
locator = guardian_locator.GuardianLocator(root)

root.mainloop()

这是我的测试循环,看看它是否正常工作。

if locator.guardian_input() is "Sailor Moon":
    print("hi")
else:
    print("no")

1 个答案:

答案 0 :(得分:1)

不确定您的代码是如何组织的以及您的“测试循环”位于何处,但我认为它位于root.mainloop()之后。因此脚本可以如下:

from tkinter import *


class GuardianLocator:

    def __init__(self, master):
        self._name = "" 
        frame = Frame(master)
        frame.grid()
        master.title("GUARDIAN LOCATOR")

        self.locator_label = Label(frame, text="Which Sailor Guardian are you looking for?", width=40, height=2)
        self.locator_label.grid()

        self.entry = Entry(frame)
        self.entry.grid()

        self.button1 = Button(frame, text="Search", command=self.guardian_name, pady=2)
        self.button1.grid()

    def guardian_name(self):
        self._name = self.entry.get()
        print(self.entry.get())


root = Tk()
locator = GuardianLocator(root)

root.mainloop()

# this will be executed after the root window is closed.
print("Name is", locator._name)   

请注意构造函数中的self._name = ""。此实例变量可用于存储GuardianLocator窗口中提供的名称。