<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代碼制作一個(gè)GUI(圖形界面)?

          共 4093字,需瀏覽 9分鐘

           ·

          2022-05-23 14:37

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


          一個(gè)好看又好用的GUI,可以大大提高大家的使用體驗(yàn),提高效率。


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


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


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


          主要使用Python的PySimpleGUI庫(kù)來(lái)完成這個(gè)工作。


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


          詳細(xì)的接口文檔地址如下。

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



          ▍1、選擇文件夾


          首先導(dǎo)入PySimpleGUI庫(kù),并且用縮寫sg來(lái)表示


          import?PySimpleGUI?as?sg

          #?窗口顯示文本框和瀏覽按鈕,?以便選擇一個(gè)文件夾
          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()方法,一行代碼就能實(shí)現(xiàn)選擇文件夾的操作。


          示例如下。



          點(diǎn)擊Browse按鈕,選擇文件夾,文本框就會(huì)顯示出文件夾的絕對(duì)路徑。


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



          如果沒有選擇文件夾,而是直接點(diǎn)擊OK按鈕,會(huì)直接提示沒有選取文件夾。



          ▍2、選擇文件


          選擇文件操作和上面選擇文件夾的有點(diǎn)相似。


          不同的是,選擇文件可以設(shè)置multiple_files(是否為多個(gè)文件)和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)


          示例如下。



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



          ▍3、選擇日期


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


          #?顯示一個(gè)日歷窗口,?通過用戶的選擇,?返回一個(gè)元組(月,?日,?年)
          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)


          示例如下。



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



          ▍4、輸入文本


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


          #?顯示文本輸入框,?輸入文本信息,?返回輸入的文本,?如果取消則返回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)


          鍵入信息,示例如下。



          點(diǎn)擊OK按鈕,返回輸入的文本信息。


          如果沒有輸入,直接點(diǎn)擊OK按鈕,會(huì)提示沒有文本輸入。



          ▍5、彈窗無(wú)按鈕


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


          結(jié)果如下。



          ▍6、彈窗無(wú)標(biāo)題


          #?顯示一個(gè)沒有標(biāo)題欄的彈窗
          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、顯示通知窗口


          #?顯示一個(gè)“通知窗口”,?通常在屏幕的右下角,?窗口會(huì)慢慢淡入淡出
          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、自定義彈窗


          上面那些彈窗都是庫(kù)自帶的,如果想自定義創(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、實(shí)戰(zhàn)


          最后來(lái)個(gè)綜合實(shí)戰(zhàn)案例,將某個(gè)文件夾下所有的Excel文件中的sheet表,一一保存為單獨(dú)的Excel文件


          代碼如下,需要安裝xlwings庫(kù),其中pathlib庫(kù)是內(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):
          ????????#?顯示進(jìn)度
          ????????sg.one_line_progress_meter("Current?Progress",?index?+?1,?len(files))
          ????????wb?=?app.books.open(file)
          ????????#?提取sheet表為單獨(dú)的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庫(kù)對(duì)輸入文件夾進(jìn)行遍歷,查找出所有xls格式文件的路徑地址。



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



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



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


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

          -?END -
          對(duì)比Excel系列圖書累積銷量達(dá)15w冊(cè),讓你輕松掌握數(shù)據(jù)分析技能,可以在全網(wǎng)搜索書名進(jìn)行了解選購(gòu)
          瀏覽 30
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  六月婷婷久久 | 操逼网站免费看 | 国产精品秘 入口swag | 六月丁香久久 | 青青青青青青久久久久久久 |