01.Python-GUI編程小試—在線查詢ip歸屬地

引言

19年那會,朋友想做個(gè)桌面級應(yīng)用,就簡單學(xué)習(xí)了下Python-GUI編程,學(xué)習(xí)之初簡單做了個(gè)小應(yīng)用,主要使用python-tkinter + 高德api,在線查詢ip歸屬地

  1. 前提準(zhǔn)備
    安裝tkinter我就直接跳過了自行<pip install tkinter>; 由于使用高德api,需要去高德開放平臺去注冊key,傳送門 高德開放平臺
  2. 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()

  1. 運(yùn)行結(jié)果如下:


    GUI小應(yīng)用演示
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容