如何从类中调用启动函数

时间:2019-06-24 00:27:30

标签: python python-3.x class tkinter

我正在学习使用类,我想从另一个GetWeather类中调用我的MainApplication类。

在调用GetWeather.coords之后,我想从接收所需数据的函数开始。

到目前为止,我的代码如下:

API_ID = '///foo///'

class GetWeather:
    def __init__(self, city, country):
        url_city = 'http://api.openweathermap.org/data/2.5/weather?q={},{}&appid={}'.format(city, country, API_ID)
        weatherdata = requests.get(url_city).json()
    def coords(self):
        print(weatherdata)

class MainApplication:
    def __init__(self, master):
        self.master = master
        self.frame = tk.Frame(self.master)


        self.button1 = tk.Button(self.frame, text = 'Coords', width = 25, command = GetWeather.coords('town','country'))
        self.button1.pack()


        self.frame.pack()



def main():
    root = tk.Tk()
    app = MainApplication(root)
    root.mainloop()

if __name__ == "__main__":
    main()

2 个答案:

答案 0 :(得分:0)

要创建类的实例,请像调用一个恰好返回GetWeather对象的函数一样调用它。

此外,tkinter.Button的{​​{1}}的参数应该可以再次调用,这意味着您应该向其传递尚未被调用的函数。请注意command之后的括号。

这是您的固定代码:

GetWeather('town','country').print_coords

答案 1 :(得分:0)

没有什么可以阻止您执行此操作,但是您必须确保该功能具有所需的可用信息。由于coords()是类GetWeather的方法,因此可以通过在创建类的实例时简单地保存传递给它的值,然后使用它来实现。

下面是显示示例代码的示例代码,它将在每次单击Button时调用该函数以检索数据(与@GeeTransit的答案不同,后者仅在{{1}时才检索一次数据) }最初创建)。

button1