Python 通过';StringVar()';使用Tkinter创建新窗口

Python 通过';StringVar()';使用Tkinter创建新窗口,python,tkinter,Python,Tkinter,我目前正在尝试制作一个带有GUI的小应用程序,它可以从网站中提取天气信息,并在窗口中显示结果。我可以在没有GUI的情况下使用它,也可以使用GUI,但是当我编写GUI时,它都是在一个脚本中进行的,并且没有很好的组织。因为它是如此无组织,我决定制作一个单独的脚本,在调用类时绘制GUI GUI的一部分是一个“输入”框,可以通过Tkinter添加。该输入框将其内容存储到StringVar()中,并且可以使用.get()显示该内容。当我将所有内容无组织地编写到一个脚本中时,这种方法工作得很好,但我一辈子都

我目前正在尝试制作一个带有GUI的小应用程序,它可以从网站中提取天气信息,并在窗口中显示结果。我可以在没有GUI的情况下使用它,也可以使用GUI,但是当我编写GUI时,它都是在一个脚本中进行的,并且没有很好的组织。因为它是如此无组织,我决定制作一个单独的脚本,在调用类时绘制GUI

GUI的一部分是一个“输入”框,可以通过Tkinter添加。该输入框将其内容存储到StringVar()中,并且可以使用.get()显示该内容。当我将所有内容无组织地编写到一个脚本中时,这种方法工作得很好,但我一辈子都不知道如何在程序中将这个StringVar()从一个方法传递到另一个方法。这就是它看起来的样子:

from Tkinter import *
import Forecast


class Frames(object):

    def __init__(self):
        pass

    def main_frame(self):
        main = Tk()
        main.title('WeatherMe')
        main.geometry('300x100')

        query = StringVar()

        Label(main, text='Enter a city below').pack()
        Entry(main, textvariable=query).pack()
        Button(main, text="Submit", command=self.result_frame).pack()

        main.mainloop()

    def result_frame(self):

        result = Tk()
        result.title('City')
        result.geometry('600x125')

        Button(result, text="OK", command=result.destroy).pack()


        result.mainloop()
基本上,我的目标是在程序启动时打开一个窗口,其中包含一个标签、一个输入框和一个提交按钮。在输入框中输入城市并单击提交后,将打开一个显示结果的新窗口

因为条目在第一个窗口上,所以我需要将条目的StringVar()的值传递给第二个窗口,这样它就可以提取数据并显示标签。无论我尝试什么,它似乎不起作用,我要么得到一个404错误,这意味着该字符串有问题,使得它试图从无效链接获得响应,要么出现连接错误“无法连接str和实例对象”


我还尝试将StringVar()保存为任一方法之外的变量,但问题是我需要在StringVar()之前调用另一个Tk()实例

您正在创建两个独立的
Tk
实例。你不应该那样做。一个原因就是因为这个问题:您不能在它们之间共享小部件或tkinter变量的实例


如果需要多个窗口,请创建单个根窗口,然后创建一个或多个
Toplevel
实例。另外,只为根窗口调用
mainloop

您正在创建两个独立的
Tk
实例。你不应该那样做。一个原因就是因为这个问题:您不能在它们之间共享小部件或tkinter变量的实例


如果需要多个窗口,请创建单个根窗口,然后创建一个或多个
Toplevel
实例。另外,只为根窗口调用
mainloop

谢谢你的建议,布莱恩!现在一切正常。我不知道你不能在两个不同的实例之间共享tkinter变量。谢谢你的帮助!谢谢你的建议,布莱恩!现在一切正常。我不知道你不能在两个不同的实例之间共享tkinter变量。谢谢你的帮助!