引言
19年那會,朋友想做個(gè)桌面級應(yīng)用,就簡單學(xué)習(xí)了下Python-GUI編程,學(xué)習(xí)之初簡單做了個(gè)小應(yīng)用,主要使用python-tkinter + 高德api,在線查詢ip歸屬地
- 前提準(zhǔn)備
安裝tkinter我就直接跳過了自行<pip install tkinter>; 由于使用高德api,需要去高德開放平臺去注冊key,傳送門 高德開放平臺 - Start Code
廢話不多說,直接上代碼,如下代碼申請key之后可以直接運(yùn)行
import tkinter, requests
class FindLocation(object):
def __init__(self):
# 創(chuàng)建主窗口,用于容納其它組件
self.root = tkinter.Tk()
# 給主窗口設(shè)置標(biāo)題內(nèi)容
self.root.title("國內(nèi)定位ip位置(在線版)")
# 創(chuàng)建一個(gè)輸入框,并設(shè)置尺寸
self.ip_input = tkinter.Entry(self.root, width=30)
# 創(chuàng)建一個(gè)回顯列表
self.display_info = tkinter.Listbox(self.root, width=50)
# 創(chuàng)建一個(gè)查詢結(jié)果的按鈕
self.result_button = tkinter.Button(self.root, command=self.find_position, text="查詢")
# 完成布局
def gui_arrang(self):
self.ip_input.pack()
self.display_info.pack()
self.result_button.pack()
# 根據(jù)ip查找地理位置
def find_position(self):
# 獲取輸入信息
self.ip_addr = self.ip_input.get()
params = {
'ip': self.ip_addr,
}
url = "https://restapi.amap.com/v3/ip?key=xxxxxxxxxx"
aim = requests.get(url, params=params).json()
# aim = self.gi.record_by_name(self.ip_addr)
# 為了避免非法值,導(dǎo)致程序崩潰,有興趣可以用正則寫一下具體的規(guī)則,我為了便于新手理解,減少代碼量,就直接粗放的過濾了
try:
# 獲取目標(biāo)城市
city = aim["city"]
# 獲取目標(biāo)國家
country = aim["province"]
# 獲取目標(biāo)地區(qū)
region_code = aim["adcode"]
# 獲取目標(biāo)經(jīng)度
lagitude = aim["rectangle"]
except:
pass
# 創(chuàng)建臨時(shí)列表
the_ip_info = [
"所在經(jīng)緯度:" + str(lagitude),
"地域代號:" + str(region_code),
"所在城市:" + str(city),
"所在國家或地區(qū):" + str(country),
"需要查詢的ip:" + str(self.ip_addr)
]
# 清空回顯列表可見部分,類似clear命令
for item in range(10):
self.display_info.insert(0, "")
# 為回顯列表賦值
for item in the_ip_info:
self.display_info.insert(0, item)
# 這里的返回值,沒啥用,就是為了好看
return the_ip_info
def main():
# 初始化對象
FL = FindLocation()
# 進(jìn)行布局
FL.gui_arrang()
# 主程序執(zhí)行
tkinter.mainloop()
pass
if __name__ == "__main__":
main()
-
運(yùn)行結(jié)果如下:
GUI小應(yīng)用演示
