<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制作可視化GUI界面,順便實現(xiàn)自動分類整理文件!

          共 4367字,需瀏覽 9分鐘

           ·

          2022-04-28 17:24


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

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


          有時候,我們寫了一些簡單、有用的小代碼。此時,如果能夠有一個可視化GUI界面,是不是顯得很舒服。今天介紹的一個Python庫,超級牛逼,幾行代碼就可以實現(xiàn)一個可視化界面!

          Gooey介紹

          這里用到的是一個第三方包Gooey,它只需要一行代碼,就可以將Python程序,轉(zhuǎn)換為圖形界面應(yīng)用【加上裝飾器函數(shù), 額外添加幾個參數(shù)就可以了】

          Gooey是一個Python GUI程序開發(fā)框架,基于wxPython GUI庫,使用方法類似于Python內(nèi)置CLI開發(fā)庫 argparse,用一行代碼即可快速將控制臺程序,轉(zhuǎn)換為GUI應(yīng)用程序。

          官方地址:https://github.com/chriskiehl/Gooey

          ① 安裝方式

          pip?install?Gooey

          ② 一個簡單的例子

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

          from?gooey?import?Gooey,?GooeyParser

          @Gooey
          def?main():
          ????parser?=?GooeyParser(description="My?GUI?Program!")
          ? parser.add_argument('Filename',?widget="FileChooser")??????#?文件選擇框
          ?parser.add_argument('Date',?widget="DateChooser")??????????#?日期選擇框
          ?args?=?parser.parse_args()?????????????????????????????????#?接收界面?zhèn)鬟f的參數(shù)
          ?print(args)

          if???__name__?==?'__main__':
          ????main()

          結(jié)果如下:

          我們還可以通過將參數(shù)傳遞給裝飾器,來配置不同的樣式功能

          @Gooey(advanced=Boolean,??????????#?toggle?whether?to?show?advanced?config?or?not?
          ???????language=language_string,??#?Translations?configurable?via?json
          ???????auto_start=True,???????????#?skip?config?screens?all?together
          ???????target=executable_cmd,?????#?Explicitly?set?the?subprocess?executable?arguments
          ???????program_name='name',???????#?Defaults?to?script?name
          ???????program_description,???????#?Defaults?to?ArgParse?Description
          ???????default_size=(610,?530),???#?starting?size?of?the?GUI
          ???????required_cols=1,???????????#?number?of?columns?in?the?"Required"?section
          ???????optional_cols=2,???????????#?number?of?columns?in?the?"Optional"?section
          ???????dump_build_config=False,???#?Dump?the?JSON?Gooey?uses?to?configure?itself
          ???????load_build_config=None,????#?Loads?a?JSON?Gooey-generated?configuration
          ???????monospace_display=False)???#?Uses?a?mono-spaced?font?in?the?output?screen
          )

          上面已經(jīng)使用了兩個簡單的控件:FileChooserDateChooser·,分別提供了“文件選擇器”和 “日期選擇器”的功能。Gooey 中,現(xiàn)在支持的 chooser 類控件有:

          配置參數(shù)主要是對Gooey界面做全局配置,配置方法如下:

          @Gooey(program_name='Demo')
          def?function():
          ????pass

          和program_name參數(shù)配置一樣,Gooey 還支持很多其它配置,下面是它支持的參數(shù)列表:

          案例介紹

          比如我們想做一個文件整理的自動化程序,如圖所示,有這樣一堆雜亂地文件,我們需要將相同類型地文件進行分類。

          此時可以思考一下,可視化界面上需要有一個文件選擇框,我們選擇好對應(yīng)文件夾之后,點擊開始,就可以實現(xiàn)最終的文件分類,豈不美哉?

          那么如何使用這個庫實現(xiàn)這個功能呢?

          #?導(dǎo)入相關(guān)庫
          import?os
          import?glob
          import?shutil
          from?gooey?import?Gooey,?GooeyParser

          #?定義一個文件字典,不同的文件類型,屬于不同的文件夾,一共9個大類。
          file_dict?=?{
          ????'圖片':?['jpg',?'png',?'gif',?'webp'],
          ????'視頻':?['rmvb',?'mp4',?'avi',?'mkv',?'flv'],
          ????"音頻":?['cd',?'wave',?'aiff',?'mpeg',?'mp3',?'mpeg-4'],
          ????'文檔':?['xls',?'xlsx',?'csv',?'doc',?'docx',?'ppt',?'pptx',?'pdf',?'txt'],
          ????'壓縮文件':?['7z',?'ace',?'bz',?'jar',?'rar',?'tar',?'zip',?'gz'],
          ????'常用格式':?['json',?'xml',?'md',?'ximd'],
          ????'程序腳本':?['py',?'java',?'html',?'sql',?'r',?'css',?'cpp',?'c',?'sas',?'js',?'go'],
          ????'可執(zhí)行程序':?['exe',?'bat',?'lnk',?'sys',?'com'],
          ????'字體文件':?['eot',?'otf',?'fon',?'font',?'ttf',?'ttc',?'woff',?'woff2']
          }


          #?定義一個函數(shù),傳入每個文件對應(yīng)的后綴。判斷文件是否存在于字典file_dict中;
          #?如果存在,返回對應(yīng)的文件夾名;如果不存在,將該文件夾命名為"未知分類";
          def?func(suffix):
          ????for?name,?type_list?in?file_dict.items():
          ????????if?suffix.lower()?in?type_list:
          ????????????return?name
          ????return?"未知分類"


          @Gooey(encoding='utf-8',?program_name="整理文件小工具-V1.0.0\n\n公眾號:數(shù)據(jù)分析與統(tǒng)計學(xué)之美",?language='chinese')
          def?start():
          ????parser?=?GooeyParser()
          ????parser.add_argument("path",?help="請選擇要整理的文件路徑:",?widget="DirChooser")??#?一定要用雙引號?不然沒有這個屬性
          ????args?=?parser.parse_args()
          ????# print(args, flush=True)??#?坑點:flush=True在打包的時候會用到
          ????return?args


          if?__name__?==?'__main__':
          ????args?=?start()
          ????path?=?args.path

          ????#?遞歸獲取?"待處理文件路徑"?下的所有文件和文件夾。
          ????for?file?in?glob.glob(f"{path}/**/*",?recursive=True):
          ????????#?由于我們是對文件分類,這里需要挑選出文件來。
          ????????if?os.path.isfile(file):
          ????????????#?由于isfile()函數(shù),獲取的是每個文件的全路徑。這里再調(diào)用basename()函數(shù),直接獲取文件名;
          ????????????file_name?=?os.path.basename(file)
          ????????????suffix?=?file_name.split(".")[-1]
          ????????????#?判斷?"文件名"?是否在字典中。
          ????????????name?=?func(suffix)
          ????????????#?print(func(suffix))
          ????????????#?根據(jù)每個文件分類,創(chuàng)建各自對應(yīng)的文件夾。
          ????????????if?not?os.path.exists(f"{path}\\{name}"):
          ????????????????os.mkdir(f"{path}\\{name}")
          ????????????#?將文件復(fù)制到各自對應(yīng)的文件夾中。
          ????????????shutil.copy(file,?f"{path}\\{name}")

          最終效果如下:

          仔細觀察上述代碼,涉及到GUI界面制作的代碼,根本沒有幾行,是不是做一個簡單的工具超方便?

          注意:上述代碼請在Pycharm中實現(xiàn),貌似和jupyter notebook有沖突,運行報錯,你可以嘗試一下,如果解決了,麻煩留言告知一下,謝謝!

          程序打包

          "打包"就用我們最常用的pyinstaller吧!

          #?安裝
          pip?install?pyinstaller

          #?打包時執(zhí)行命令?(其中F為大寫,w為小寫)
          pyinstaller?-F?Tool.py?-w

          執(zhí)行效果如下:

          生成的exe文件在目錄dist下,雙擊可用。



          1. 安裝這5個插件后,PyCharm好用到起飛!

          2. 使用Python+opencv進行圖像處理

          3. 1分鐘爬取全國高校信息,制成大屏可視化!

          4. 用 VSCode 寫 Python,這 14 個插件不容錯過!




          瀏覽 79
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  亚洲日韩欧美三级片 | 亚洲巨爆乳一区二区三区 | 就操在线| 乱伦视频91 | 中文在线A∨在线 |