我是编写代码的新手,我正在努力将GUI中的标签代码和API代码链接起来

时间:2018-05-02 17:43:16

标签: python tkinter label

我已经分别编写了GUI和API,我尝试了几种不同的方式来链接这两者。但是想到发布裸骨结构将是最简单的方式,只需要讨论链接这两者的代码。 GUI的代码如下所示

from tkinter import *
def weather_search():


    root = Tk()

    root.title("Weather")
    root.geometry("800x600")

    app = Frame(root)
    app.grid() #This puts the frame into the grid
    label = Label(app, text = "Weather")
    label.grid()

    location_label = Label(root,text = "Enter a Location")
    location_entry = Entry(root)

    location_label.grid(row=1, column = 1) 
    location_entry.grid(row=1, column = 2) 

猜测这是我必须链接到API。但这也是我有限的经验造成问题的地方。

    user_location = location_entry.get()
    print(user_location)

我尝试使用此功能,但我确信还有更多功能需要完成。

    root.mainloop()

weather_search()

#the code for the API is what follows

import requests

city = input("Enter: ")

url = 'http://api.openweathermap.org/data/2.5/weather?q={}&appid=46346a863b94cd3b89bad166fed78b7d&units=metric'.format(city)

res = requests.get(url)
data = res.json()

print(res)
print(data)

我不确定输入位置后是否需要搜索功能。

1 个答案:

答案 0 :(得分:0)

根据我的理解,你想从条目中获取位置。

通常的方法是将条目与StringVar相关联,city作为条目中值的一种链接。

知道何时读取条目的简单方法是用户点击RETURN键,因此我将其绑定到条目。然后回调函数读取条目并设置from tkinter import * root = Tk() root.title("Weather") root.geometry("800x600") app = Frame(root) app.grid() #This puts the frame into the grid label = Label(app, text = "Weather") label.grid() def read_entry(event): # Entry ENTER key callback function global city city = location.get() print(city) location_label = Label(root,text = "Enter a Location") location_label.grid(row=1, column = 1) location = StringVar() # Create a StringVar location_entry = Entry(root, textvariable=location) # Assign textvariable location_entry.grid(row=1, column = 2) location_entry.bind('<Return>', read_entry) # Bind ENTER key to function # that reads entry location_entry.focus_set() # Sets keyboard focus to entry root.mainloop() 变量。

此外,我将焦点设置为输入,因此您无需单击它即可输入位置。

我认为将GUI放在一个函数中的想法似乎有点不寻常,所以我按照我的想法重写了它。

city

现在,当您退出mainloop时,其余代码可以使用变量library(tidyverse) df1 <- df %>% group_by(OrderDate, MajorCategory) %>% tally() %>% mutate(MajorCategory = paste("MC", MajorCategory, sep="_")) %>% spread(MajorCategory, n) df1 。但是您必须退出mainloop或将其余代码放在GUI代码中。