亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

這可能是最好玩的python GUI入門實(shí)例(推薦)

系統(tǒng) 1756 0

這可能是最好玩的python GUI入門實(shí)例(推薦)_第1張圖片

簡單的說,GUI編程就是給程序加上圖形化界面.

python的腳本開發(fā)簡單,有時(shí)候只需幾行代碼就能實(shí)現(xiàn)豐富的功能,而且python本身是跨平臺(tái)的,所以深受程序員的喜愛.

如果給程序加一個(gè)圖形化界面,那么普通的用戶也就能用上python的腳本,極大提升工作效率,所以給python程序加上圖形化界面,把自己寫的腳本,提供給普通用戶,的確是一件激動(dòng)人心的事!

如何給python腳本加圖形化界面?

作者首先考慮了通過瀏覽器運(yùn)行python的圖形化界面,為了理想的效果,python需要借助javascript實(shí)現(xiàn)一些功能,而且python需要額外安裝pyv8模塊,我折騰了一下,發(fā)現(xiàn)pyv8模塊安裝很麻煩,而且依賴的庫很多,編譯安裝也根據(jù)不同的操作系統(tǒng),存在各種坑,pyv8不適合普通用戶,于是就暫時(shí)擱置了pyv8模塊.

這可能是最好玩的python GUI入門實(shí)例(推薦)_第2張圖片

軟件界面

隨后我又比較了pyqt5與tkinter兩個(gè)模塊: pyqt5功能很強(qiáng),界面也漂亮,但語法比較復(fù)雜,pyqt5模塊需要單獨(dú)安裝,不適合新手入門;

tkinter是python3自帶的模塊,能滿足基本的功能需求,語法也簡單,基本上5分鐘就能上手,所以最終選擇了tkinter.

網(wǎng)上當(dāng)前的python GUI教程存在的問題:

1.功能太簡單,基本功能就是"花式"顯示"Hello World";

2.注釋不明了,復(fù)制粘貼別人寫的博客代碼,代碼殘缺

3.版本老舊,都是針對python2.7的程序,導(dǎo)入方式如 import Tkinter ,python3應(yīng)為 import tkinter

這次作者選擇了一個(gè) "根據(jù)ip地址定位地理位置"的腳本,作為本次教程的素材,比較好玩,也比較容易實(shí)現(xiàn):

解釋的內(nèi)容都放到了注釋里,上代碼:

            
import tkinter
import pygeoip

class FindLocation(object):
 def __init__(self):
 self.gi = pygeoip.GeoIP("./GeoLiteCity.dat")
 # 創(chuàng)建主窗口,用于容納其它組件
 self.root = tkinter.Tk()
 # 給主窗口設(shè)置標(biāo)題內(nèi)容
 self.root.title("全球定位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()
 aim = self.gi.record_by_name(self.ip_addr)
 # 為了避免非法值,導(dǎo)致程序崩潰,有興趣可以用正則寫一下具體的規(guī)則,我為了便于新手理解,減少代碼量,就直接粗放的過濾了
 try:

  # 獲取目標(biāo)城市
  city = aim["city"]
  # 獲取目標(biāo)國家
  country = aim["country_name"]
  # 獲取目標(biāo)地區(qū)
  region_code = aim["region_code"]
  # 獲取目標(biāo)經(jīng)度
  longitude = aim["longitude"]
  # 獲取目標(biāo)緯度
  latitude = aim["latitude"]
 except:
  pass
 
 # 創(chuàng)建臨時(shí)列表
 the_ip_info = ["所在緯度:"+str(latitude),"所在經(jīng)度:"+str(longitude),"地域代號(hào):"+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)行效果(為了更好的演示效果,使用了gif圖,圖片尺寸較大,建議在wifi環(huán)境下觀看,土豪隨意~):

一張很有尺寸的演示圖!

由于離線查詢ip需要全球IP的分布數(shù)據(jù),所以我直接選擇了一個(gè)免費(fèi)離線查詢ip的數(shù)據(jù)包,為了讀取這個(gè)包的數(shù)據(jù)還需要安裝一個(gè)模塊: pip install pygeoip ,極少數(shù)人的當(dāng)年安裝python3的時(shí)候,選了不含tkinter的python3安裝包,為了學(xué)習(xí),還是要把這個(gè)模塊補(bǔ)上: pip install tkinter

如果想將示例程序轉(zhuǎn)為windows下的可執(zhí)行文件(.exe),參考這篇

https://www.jb51.net/article/165766.htm

教程涉及到的資源我都通過百度網(wǎng)盤分享給大家,為了便于大家的下載,資源整合到了一張獨(dú)立的帖子里,鏈接如下:

http://www.jianshu.com/p/4f28e1ae08b1

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 99久久做夜夜爱天天做精品 | 亚洲国产日韩欧美高清片a 亚洲国产日韩欧美一区二区三区 | 久精品视频村上里沙 | 国产福利视频奶水在线 | 综合伊人 | 一区二区亚洲视频 | 一区二区三区在线 | 欧 | 亚洲精品亚洲人成在线 | 伊人久久婷婷丁香六月综合基地 | 综合久久99久久99播放 | 91在线视频网址 | 精品国产自在久久 | 亚洲精品亚洲人成毛片不卡 | 成人合集大片bd高清在线观看 | 毛片片| 五月久久亚洲七七综合中文网 | 国产精品视频一 | 国产高清狼人香蕉在线观看 | 欧美精品国产一区二区三区 | 女人l8毛片a一级毛片免费 | 99热久久这里只有精品6 | 夜夜爱夜夜爽 | 日韩欧美精品一区二区三区 | 欧美大片国产在线永久播放 | 亚州综合激情另类久久久 | 国产高清国产专区国产精品 | 激情综合五月 | 久久国产亚洲 | 日本不卡在线 | 久久在线免费视频 | 亚洲激情网址 | 青青青青久久国产片免费精品 | 操一操日一日 | 久久午夜国产片 | 亚洲视频在线免费 | 岛国精品在线观看 | 成人人观看的免费毛片 | 中文字幕第一页亚洲 | 网红被免费网站视频在线 | 真人视频一级毛片 | 日韩在线一区二区三区免费视频 |