2014-12-03 4 views
1

Это мой первый персональный проект python. Я хочу использовать Tkinter для создания окна (GUARDIAN LOCATOR), который просит пользователя ввести значение (введите опекуна моряка) в поле ввода. Остальная часть программы зависит от того, что пользователь вводит в поле ввода, так как я буду иметь, если введя/-ые заявления, реагирующие на введенного матроса-опекуна.Значение окна ввода магазина Tkinter как значение для другого файла

Проблема, с которой я столкнулась, заключается в хранении того, что введено в поле ввода, в качестве переменной, которая будет использоваться в моем основном файле для операторов 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

Не знаю точно, как организован ваш код и где ваш «тестовый цикл» находится, но я полагаю, что после 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.

+0

Омгош, который работает! Раньше я пытался сделать очень похожий метод, но, должно быть, я его каким-то образом напортачил. Спасибо, Марцин! – djohnson129

+0

@ djohnson129 Если anwser хорош, это будет хорошо :-) – Marcin

+0

Если бы вы хотели нажать на галочку, я просто сделал. Я еще не знал об этом: / – djohnson129

 Смежные вопросы

  • Нет связанных вопросов^_^