我正在学习使用类,我想从另一个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()
答案 0 :(得分:0)
要创建类的实例,请像调用一个恰好返回GetWeather
对象的函数一样调用它。
此外,tkinter.Button
的{{1}}的参数应该可以再次调用,这意味着您应该向其传递尚未被调用的函数。请注意command
之后的括号。
这是您的固定代码:
GetWeather('town','country').print_coords
答案 1 :(得分:0)
没有什么可以阻止您执行此操作,但是您必须确保该功能具有所需的可用信息。由于coords()
是类GetWeather
的方法,因此可以通过在创建类的实例时简单地保存传递给它的值,然后使用它来实现。
下面是显示示例代码的示例代码,它将在每次单击Button
时调用该函数以检索数据(与@GeeTransit的答案不同,后者仅在{{1}时才检索一次数据) }最初创建)。
button1