<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(圖形界面)?

          共 4165字,需瀏覽 9分鐘

           ·

          2022-05-29 08:23


          大家好,我是小F。


          GUI(圖形用戶界面),顧名思義就是用圖形的方式,來顯示計算機操作的界面,更加方便且直觀。


          一個好看又好用的GUI,可以大大提高大家的使用體驗,提高效率。


          比如你想開發(fā)一個計算器,如果只是一個程序輸入,輸出窗口的話,是沒有用戶體驗的。


          所以開發(fā)一個圖形化的小窗口,就變得很有必要。


          今天,小F就給大家介紹如何只用一行Python代碼制作一個GUI


          主要使用Python的PySimpleGUI庫來完成這個工作。


          #?安裝PySimpleGUI
          pip?install?PySimpleGUI?-i?https://mirror.baidu.com/pypi/simple


          詳細的接口文檔地址如下。

          https://pysimplegui.readthedocs.io/en/latest/call%20reference/



          ▍1、選擇文件夾


          首先導入PySimpleGUI庫,并且用縮寫sg來表示


          import?PySimpleGUI?as?sg

          #?窗口顯示文本框和瀏覽按鈕,?以便選擇一個文件夾
          dir_path?=?sg.popup_get_folder("Select?Folder")
          if?not?dir_path:
          ????sg.popup("Cancel",?"No?folder?selected")
          ????raise?SystemExit("Cancelling:?no?folder?selected")
          else:
          ????sg.popup("The?folder?you?chose?was",?dir_path)


          通過使用PySimpleGUI的popup_get_folder()方法,一行代碼就能實現(xiàn)選擇文件夾的操作。


          示例如下。



          點擊Browse按鈕,選擇文件夾,文本框就會顯示出文件夾的絕對路徑。


          點擊OK按鈕,顯示最終選擇的路徑信息,再次點擊OK按鈕,結(jié)束窗口。



          如果沒有選擇文件夾,而是直接點擊OK按鈕,會直接提示沒有選取文件夾。



          ▍2、選擇文件


          選擇文件操作和上面選擇文件夾的有點相似。


          不同的是,選擇文件可以設(shè)置multiple_files(是否為多個文件)和file_types(文件類型)參數(shù)。


          #?窗口顯示文本框和瀏覽按鈕,?以便選擇文件
          fname?=?sg.popup_get_file("Choose?Excel?file",?multiple_files=True,?file_types=(("Excel?Files",?"*.xls*"),),)
          if?not?fname:
          ????sg.popup("Cancel",?"No?filename?supplied")
          ????raise?SystemExit("Cancelling:?no?filename?supplied")
          else:
          ????sg.popup("The?filename?you?chose?was",?fname)


          示例如下。



          選擇了多個Excel文件,最終結(jié)果返回了所有文件的路徑地址。



          ▍3、選擇日期


          使用popup_get_date()方法,顯示一個日歷窗口。


          #?顯示一個日歷窗口,?通過用戶的選擇,?返回一個元組(月,?日,?年)
          date?=?sg.popup_get_date()
          if?not?date:
          ????sg.popup("Cancel",?"No?date?picked")
          ????raise?SystemExit("Cancelling:?no?date?picked")
          else:
          ????sg.popup("The?date?you?chose?was",?date)


          示例如下。



          選擇好日期后,點擊OK按鈕,即可返回日期元組結(jié)果。



          ▍4、輸入文本


          使用popup_get_text()方法,顯示一個文本輸入框。


          #?顯示文本輸入框,?輸入文本信息,?返回輸入的文本,?如果取消則返回None
          text?=?sg.popup_get_text("Please?enter?a?text:")
          if?not?text:
          ????sg.popup("Cancel",?"No?text?was?entered")
          ????raise?SystemExit("Cancelling:?no?text?entered")
          else:
          ????sg.popup("You?have?entered",?text)


          鍵入信息,示例如下。



          點擊OK按鈕,返回輸入的文本信息。


          如果沒有輸入,直接點擊OK按鈕,會提示沒有文本輸入。



          ▍5、彈窗無按鈕


          #?顯示一個彈窗,?但沒有任何按鈕
          sg.popup_no_buttons("You?cannot?click?any?buttons")


          結(jié)果如下。



          ▍6、彈窗無標題


          #?顯示一個沒有標題欄的彈窗
          sg.popup_no_titlebar("A?very?simple?popup")


          結(jié)果如下。




          ▍7、彈窗只有OK按鈕


          #?顯示彈窗且只有OK按鈕
          sg.popup_ok("You?can?only?click?on?'OK'")


          結(jié)果如下。




          ▍8、彈窗只有Error按鈕(紅色)


          #?顯示彈窗且只有error按鈕,?按鈕帶顏色
          sg.popup_error("Something?went?wrong")


          結(jié)果如下。




          ▍9、顯示通知窗口


          #?顯示一個“通知窗口”,?通常在屏幕的右下角,?窗口會慢慢淡入淡出
          sg.popup_notify("Task?done!")


          結(jié)果如下, Task done提示信息淡入淡出。




          ▍10、彈窗選擇


          #?顯示彈窗以及是和否按鈕,?選擇判斷
          answer?=?sg.popup_yes_no("Do?you?like?this?video?")
          sg.popup("You?have?selected",?answer)


          結(jié)果如下。




          ▍11、自定義彈窗


          上面那些彈窗都是庫自帶的,如果想自定義創(chuàng)建,可以參考下面的方法。


          #?自定義創(chuàng)建彈窗,?一行代碼完成
          choice,?_?=?sg.Window(
          ????"Continue?",
          ????[[sg.T("Do?you?want?to?subscribe?to?this?channel?")],?[sg.Yes(s=10),?sg.No(s=10),?sg.Button('Maybe',?s=10)]],
          ????disable_close=True,
          ).read(close=True)
          sg.popup("Your?choice?was",?choice)


          結(jié)果如下。



          ▍12、實戰(zhàn)


          最后來個綜合實戰(zhàn)案例,將某個文件夾下所有的Excel文件中的sheet表,一一保存為單獨的Excel文件


          代碼如下,需要安裝xlwings庫,其中pathlib庫是內(nèi)置的。


          from?pathlib?import?Path
          import?PySimpleGUI?as?sg
          import?xlwings?as?xw

          #?選擇輸入文件夾
          INPUT_DIR?=?sg.popup_get_folder("Select?an?input?folder")
          if?not?INPUT_DIR:
          ????sg.popup("Cancel",?"No?folder?selected")
          ????raise?SystemExit("Cancelling:?no?folder?selected")
          else:
          ????INPUT_DIR?=?Path(INPUT_DIR)

          #?選擇輸出文件夾
          OUTPUT_DIR?=?sg.popup_get_folder("Select?an?output?folder")
          if?not?OUTPUT_DIR:
          ????sg.popup("Cancel",?"No?folder?selected")
          ????raise?SystemExit("Cancelling:?no?folder?selected")
          else:
          ????OUTPUT_DIR?=?Path(OUTPUT_DIR)

          #?獲取輸入文件夾中所有xls格式文件的路徑列表
          files?=?list(INPUT_DIR.rglob("*.xls*"))

          with?xw.App(visible=False)?as?app:
          ????for?index,?file?in?enumerate(files):
          ????????#?顯示進度
          ????????sg.one_line_progress_meter("Current?Progress",?index?+?1,?len(files))
          ????????wb?=?app.books.open(file)
          ????????#?提取sheet表為單獨的Excel表格
          ????????for?sheet?in?wb.sheets:
          ????????????wb_new?=?app.books.add()
          ????????????sheet.copy(after=wb_new.sheets[0])
          ????????????wb_new.sheets[0].delete()
          ????????????wb_new.save(OUTPUT_DIR?/?f"{file.stem}_{sheet.name}.xlsx")
          ????????????wb_new.close()

          sg.popup_ok("Task?done!")


          首先選擇輸入文件夾和輸出文件夾的地址。


          然后通過pathlib庫對輸入文件夾進行遍歷,查找出所有xls格式文件的路徑地址。



          點擊OK按鈕后,就會開始表格轉(zhuǎn)換,操作如下。



          使用了one_line_progress_meter()方法顯示程序處理的進度。



          20表示有20次循環(huán),原始Excel文件總計有20個,需要處理20次,其他的都在上圖中標示出來咯。


          好了,今天的分享就到這里了,有興趣的小伙伴可以自行去學習。


          往期推薦
          1、Python實戰(zhàn)之將頭像轉(zhuǎn)成動漫風
          2、用Python做游戲有多簡單
          3、Python代碼自動轉(zhuǎn)成其他編程語言代碼
          4、喜大普奔!Python終行動,天下苦GIL久矣
          5、好用!快速釋放空間的微信清理工具
          點擊關(guān)注公眾號,閱讀更多精彩內(nèi)容
          瀏覽 51
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产精品九九九九九九九九九 | 天天日天天操天天插天天射 | caobiwangzhi | 高清无码免费观看视频 | 免费黄色视频网站在线观看 |