1. 一行代碼將Python程序轉換為圖形界面應用

        共 3922字,需瀏覽 8分鐘

         ·

        2021-01-28 18:26


        ↑?關注 + 星標?,每天學Python新技能

        后臺回復【大禮包】送你Python自學大禮包



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

        1.快速開始

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

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

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

        請選擇以下任一種方式輸入命令安裝依賴
        1. Windows 環(huán)境 打開 Cmd (開始-運行-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


        如果你的網絡不支持從GitHub克隆,請在Python實用寶典上回復:Gooey 下載項目源代碼。

        解壓后進入該文件夾,運行 setup.py:

        python setup.py install

        2.使用方法

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

        比如在scihub文獻下載的文章中,我們需要輸入兩個參數(shù):1.關鍵詞,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="關鍵詞")
        ????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ù)用于提醒用戶該選擇器的作用,效果如下:



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

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



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

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


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

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

        上滑查看更多代碼

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

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

        ????Args:
        ????????keywords (str): 關鍵詞
        ????????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="關鍵詞")
        ????parser.add_argument('limit', help="下載篇數(shù)")
        ????args = parser.parse_args()
        ????search(args.keywords, int(args.limit), args.path)

        main()


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

        你也完全可以使用自己的程序進行圖形界面化,這無關緊要。

        效果如下:



        3.支持的widget組件

        所有支持的widget組件如下:

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


        2.下拉框?widget="DropDown"



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



        4.各種目標類型的選擇框

        文件選擇框?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實用寶典后臺回復?buildspec下載 build.spec.txt.

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


        如下所示:


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

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

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

        pip install?pyinstaller


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

        pyinstaller build.spec.txt




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


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

        見面禮


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


        推薦閱讀


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

        2. 全球最大色情網站宣布:封殺特朗普

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

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

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


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

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
          
          

            1. 囯产精品久久久久久久久久乐趣播 | 小舞3d同人18av网站 | 欧美国产成人视频 | 亚洲日韩成人 | 免费成人网站在线观看 |