Я опубликовал что-то об этом раньше и как ответ, который, как я думал, решил мою проблему, но он не полностью ее разрешил. В принципе, я ищу способ передать StringVar() из моего первого метода под названием «main_frame» ко второму методу, называемому «result_frame», когда нажата кнопка в методе «main_frame».Передача переменных между двумя окнами Tkinter
from Tkinter import *
import Forecast
class Frames(object):
def __init__(self):
pass
def main_frame(self):
root = Tk()
root.title('WeatherMe')
root.geometry('300x100')
query = StringVar()
Label(root, text='Enter a city below').pack()
Entry(root, textvariable=query).pack()
Button(root, text="Submit", command=self.result_frame).pack()
root.mainloop()
def result_frame(self):
result = Toplevel()
result.title('City')
result.geometry('1600x150')
forecast = Forecast.GetWeather('City Here').fetch_weather()
Label(result, text='1-3 DAY: \n' + forecast[0]).pack()
Label(result, text='4-7 DAY: \n' + forecast[1]).pack()
Label(result, text='8-10 DAY: \n' + forecast[2]).pack()
Button(result, text="OK", command=result.destroy).pack()
Как вы можете видеть, в одном окне будет поле ввода, в котором вы можете ввести город. Запись сохранит содержимое в StringVar(). Я хочу, чтобы моя кнопка в методе «main_frame» вызывала «result_frame» и использовала значение, находящееся в моем первом окне. Если я добавлю параметр ко второму методу, мне нужно будет сразу указать его в моей кнопке, и это, конечно же, сразу вызовет его, когда программа будет открыта, чего я хочу избежать. Я прошу прощения, если это простое решение, которого я просто пропустил здесь, я боролся с этим какое-то время без решения. Мне сказали, что в прошлый раз я отправил это, чтобы вызвать только один экземпляр Tk(), который я сделал здесь, и использовал Toplevel() для моего дополнительного окна, но у меня все еще есть проблемы с передачей переменной из одного окна в другое.
Спасибо !!! Я думаю, что моя проблема была в том, что я не работал за пределами класса. Я действительно пытался таким образом раньше и потому, что root был вызван в классе, он не работал. Еще раз спасибо! – BroccolliBeef