<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一行代碼將Python程序轉(zhuǎn)換為圖形界面應(yīng)用

          共 3922字,需瀏覽 8分鐘

           ·

          2021-01-28 18:26


          ↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能

          后臺回復(fù)【大禮包】送你Python自學(xué)大禮包



          Gooey項目支持用一行代碼將(幾乎)任何Python 2或3控制臺程序轉(zhuǎn)換為GUI應(yīng)用程序。

          1.快速開始

          開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南?進(jìn)行安裝。

          如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

          此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點:Python 編程的最好搭檔—VSCode 詳細(xì)指南

          請選擇以下任一種方式輸入命令安裝依賴
          1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
          2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
          3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

          (方式一)安裝Gooey的最簡單方法是通過 PIP:

          pip install?Gooey


          (方式二)或者,可以通過將項目克隆到本地目錄來安裝Gooey

          git clone https://github.com/chriskiehl/Gooey.git


          如果你的網(wǎng)絡(luò)不支持從GitHub克隆,請在Python實用寶典上回復(fù):Gooey 下載項目源代碼。

          解壓后進(jìn)入該文件夾,運(yùn)行 setup.py:

          python setup.py install

          2.使用方法

          Gooey 通過將一個簡單的裝飾器附加到主函數(shù)上,然后使用GooeyParser可將你所有需要用到的參數(shù)可視化為文本框、選擇框甚至是文件選擇框。

          比如在scihub文獻(xiàn)下載的文章中,我們需要輸入兩個參數(shù):1.關(guān)鍵詞,2.下載篇數(shù),使用Gooey可以這么改:

          from?gooey import?Gooey, GooeyParser

          @Gooey
          def?main():
          ????parser = GooeyParser(description="中文環(huán)境可用的scihub下載器 - @Python實用寶典")
          ????parser.add_argument('path', help="下載路徑", widget="DirChooser")
          ????parser.add_argument('keywords', help="關(guān)鍵詞")
          ????parser.add_argument('limit', help="下載篇數(shù)")
          ????args = parser.parse_args()
          ????search(args.keywords, int(args.limit), args.path)


          GooeyParser 和 ArgumentParser 一樣,使用 add_argument 就可以增加輸入?yún)?shù),不同的是 GooeyParser 提供了可視化的選項:

          parser.add_argument('path', help="下載路徑", widget="DirChooser")


          這一行代碼,widget 參數(shù)給 args.path 變量提供了一個目錄選擇器(widget="DirChooser"),help參數(shù)用于提醒用戶該選擇器的作用,效果如下:



          當(dāng)你不提供widget參數(shù)時,程序默認(rèn)使用文本輸入框。

          parser.add_argument('keywords', help="關(guān)鍵詞")
          parser.add_argument('limit', help="下載篇數(shù)")



          Gooey會自動編排你的參數(shù),因此你不需要擔(dān)心各個文本框或選擇框的顯示問題。代碼中的:

          args = parser.parse_args()
          search(args.keywords, int(args.limit), args.path)


          args = parser.parse_args() 可以將用戶輸入的所有文本轉(zhuǎn)化為對應(yīng)對象的變量值,通過 args.var 可以直接提取對應(yīng)的變量值。

          這個簡單的可視化程序完整代碼及效果如下:

          上滑查看更多代碼

          import?asyncio
          from?scihub import?SciHub
          from?gooey import?Gooey, GooeyParser

          def?search(keywords: str, limit: int, path: str):
          ????"""
          ????搜索相關(guān)論文并下載

          ????Args:
          ????????keywords (str): 關(guān)鍵詞
          ????????limit (int): 篇數(shù)
          ????????path (str): 下載路徑
          ????"""

          ????sh = SciHub()
          ????result = sh.search(keywords, limit=limit)
          ????print(result)

          ????loop = asyncio.get_event_loop()
          ????# 獲取所有需要下載的scihub直鏈
          ????tasks = [sh.async_get_direct_url(paper["url"]) for?paper in?result.get("papers", [])]
          ????all_direct_urls = loop.run_until_complete(asyncio.gather(*tasks))
          ????print(all_direct_urls)

          ????# 下載所有論文
          ????loop.run_until_complete(sh.async_download(loop, all_direct_urls, path=path))
          ????loop.close()

          @Gooey
          def?main():
          ????parser = GooeyParser(description="中文環(huán)境可用的scihub下載器 - @Python實用寶典")
          ????parser.add_argument('path', help="下載路徑", widget="DirChooser")
          ????parser.add_argument('keywords', help="關(guān)鍵詞")
          ????parser.add_argument('limit', help="下載篇數(shù)")
          ????args = parser.parse_args()
          ????search(args.keywords, int(args.limit), args.path)

          main()


          這份代碼想要完美地運(yùn)行起來請結(jié)合?你不得不知道的python超級文獻(xiàn)批量搜索下載工具?的 scihub.py.

          你也完全可以使用自己的程序進(jìn)行圖形界面化,這無關(guān)緊要。

          效果如下:



          3.支持的widget組件

          所有支持的widget組件如下:

          1.勾選框?widget="CheckBox"?


          2.下拉框?widget="DropDown"



          3.互斥選擇框?widget="RadioGroup"



          4.各種目標(biāo)類型的選擇框

          文件選擇框?widget="FileChooser"
          目錄選擇框?widget="DirChooser"
          多文件選擇框?widget="MultiFileChooser"
          文件保存目錄?widget="FileSaver"


          5.日期/時間選擇器?widget="DateChooser/TimeChooser"


          6.密碼輸入框?wiget="PasswordField"



          7.多選列表框?widget="Listbox"


          8.顏色選擇器?widget="ColourChooser"



          9.可過濾的下拉框?widget="FilterableDropdown"


          10.滑片?widget="Slider"


          4.打包

          在一切都測試完畢后使用正常后,你可以通過 pyinstaller 將這個可視化程序打包成exe可執(zhí)行文件。

          1.編寫 PyInstaller buildspec

          PyInstaller使用 buildspec 來確定如何捆綁項目。你可以在Python實用寶典后臺回復(fù)?buildspec下載 build.spec.txt.

          下載后你只需要改兩行代碼:


          如下所示:


          在路徑前面帶r,可以不用輸入兩個斜桿 '\' 哦。

          2.執(zhí)行打包命令

          為了能夠使用 PyInstaller, 我們需要使用pip安裝這個模塊:

          pip install?pyinstaller


          然后進(jìn)入 build.spec.text 所在文件夾,執(zhí)行以下命令打包程序:

          pyinstaller build.spec.txt




          打包完成后會在當(dāng)前文件夾下生成一個dist文件夾,里面就包含了你打包生成的可執(zhí)行文件,打包成功。


          我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實戰(zhàn)教程。

          見面禮


          碼加我微信備注「三劍客」送你上圖三本Python入門電子書?


          推薦閱讀


          1. 太火爆了!這一款小游戲火到把服務(wù)器搞癱瘓,合成大西瓜

          2. 全球最大色情網(wǎng)站宣布:封殺特朗普

          3. 費解!為什么那么多人用“ji32k7au4a83”作密碼?

          4. 火了!開源的Python搶票神器,過年回家就看這一波了!

          5. 為什么 Django 框架比Flask框架更流行?


          點分享
          點收藏
          點點贊
          點在看
          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久大香蕉艹逼 | AV电影成人天堂 | 女人高潮在线看91 | 国产强奸视频 | 俺也去成人视频 |