<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 寫軟件原來這么簡單!

          共 5329字,需瀏覽 11分鐘

           ·

          2021-05-24 20:58

          大家好,我是村長!今天給大家介紹一個非常簡單的GUI框架--

          PySimpleGUI,它是一個純python的GUI框架。使用它可以快速實現(xiàn)GUI程序,代碼量相比其他框架減少50%到90%,如果你是一個python新手,想快速寫出自己的第一個軟件,這個庫就是一個絕佳選擇。

          安裝:pip install pysimplegui

          官方文檔 https://pysimplegui.readthedocs.io/en/latest/


          使用PySimpleGUI的優(yōu)點:

          • 創(chuàng)建的界面和操作,與使用tkinter,Qt,WxPython和Remi一致。
          • 同樣功能,需要的代碼量是其他框架的10%到50%。
          • 沒有回調(diào)函數(shù)。
          • 訪問幾乎所有基礎(chǔ)GUI框架的控件。
          • 同時支持PySide2和PyQt5(有限支持)
          • 通過僅更改導(dǎo)入語句,即可輕松地在tkinter,Qt,WxPython和Web(Remi)之間切換。
          • 在Python中同時編寫基于桌面和基于Web的GUI的唯一方法
          • 從零開始發(fā)展為具有Python友好界面的純Python實現(xiàn)。
          • 對Python的新手和專家都具有吸引力。
          • 170多個demo程序,教您集成流行的軟件包,例如OpenCV,Matplotlib,PyGame等。
          • 200頁的說明文檔,一本cookbook,大量的內(nèi)置文檔字符串幫助。

          一個簡單的例子:

          import PySimpleGUI as sg # 官網(wǎng)默認的庫的縮寫為sg,使用時建議保持統(tǒng)一

          sg.theme('DarkAmber')   # 設(shè)置當(dāng)前主題

          # 定義窗口的布局
          layout = [  [sg.Text('Some text on Row 1')],
                      [sg.Text('Enter something on Row 2'), sg.InputText()],
                      [sg.Button('Ok'), sg.Button('Cancel')] ]

          # 創(chuàng)建展示窗口
          window = sg.Window('Window Title', layout)

          # 事件循環(huán)并獲取輸入值
          while True:
              event, values = window.read()
              if event in (None, 'Cancel'):
                  break
              print('You entered ', values[0])

          window.close()


          在PySimpleGUI中,窗口布局是按照列表順序從上往下依次排列,二級列表中,從左往右依此排列。

          event, values = window.read()

          執(zhí)行上述窗口接收消息代碼,將會返回一個(event,values)元組。

          event:事件,它可能是一個按鈕的按下、單擊了某些文本、列表項的選擇等,如果用戶直接關(guān)閉窗口,則為None。默認只有Button才能觸發(fā)事件,其他控件需要加上參數(shù)enable_events=True。

          values:是一個包含所有輸入元素的值的字典。字典的key,如果沒有指定,系統(tǒng)自動編號從0開始,比如有兩個輸入框,則第一個輸入框的值是values[0],第二個輸入框的值是values[1]。

          兩種窗口類型

          一次性窗口one-shot window

          它是一個彈出窗口,它會收集一些數(shù)據(jù),或者提示數(shù)據(jù),然后將其關(guān)閉。

          import PySimpleGUI as sg

          sg.theme('DarkBlue1')

          layout = [[sg.Text('My one-shot window.')],
                    [sg.InputText()],
                    [sg.Submit(), sg.Cancel()]]

          window = sg.Window('Window Title', layout)

          event, values = window.read()
          window.close()

          text_input = values[0]
          sg.popup('You entered', text_input)


          點擊ok后,窗口自動關(guān)閉。

          持久窗口Persistent window

          它是一個持久存在的窗口。收集輸入值,但不關(guān)閉窗口,而是保持可見狀態(tài),這是向用戶輸出信息和收集輸入數(shù)據(jù)的一種方式。直到用戶單擊退出按鈕或使用X關(guān)閉窗口為止。它更像是典型的Windows / Mac / Linux程序。

          import PySimpleGUI as sg

          sg.theme('DarkAmber')

          layout = [[sg.Text('Persistent window')],
                    [sg.Input(key='-IN-')],
                    [sg.Button('Read'), sg.Exit()]]

          window = sg.Window('Window that stays open', layout)

          while True: # 循環(huán)讀取事件
              event, values = window.read()
              print(event, values)
              if event == sg.WIN_CLOSED or event == 'Exit':
                  break

          window.close()


          窗口一直存在,循環(huán)讀取窗口的信息,運行結(jié)果:

          Read {'-IN-''1'}
          Read {'-IN-''2'}
          Read {'-IN-''3'}
          Read {'-IN-''4'}
          Read {'-IN-''5'}

          如果覺得自己的窗口配色難看,使用如下代碼更改窗口主題:

          #在代碼中使用

          sg.theme('BluePurple')

          查看可用主題

          import PySimpleGUI as sg
          theme_name_list = sg.theme_list()
          print(theme_name_list) # 所有可用主題的列表
          sg.preview_all_look_and_feel_themes() #窗口展示所有主題


          一些常用的案例

          文件瀏覽

          import PySimpleGUI as sg

          sg.theme('Dark Red')

          layout = [[sg.Text('Browse to a file')],
                    [sg.Input(key='-FILE-', visible=False, enable_events=True), sg.FileBrowse()]]

          event, values = sg.Window('File Compare', layout).read(close=True)

          print(f'You chose: {values["-FILE-"]}')


          簡單的數(shù)據(jù)輸入窗口:


          下拉框

          import PySimpleGUI as sg
          layout = [
              [sg.Combo(
                  ['選項一''選項二''選項三''選項四'],
                  default_value='選項一',
                  size=(10, 1))],
              [sg.OK()]
          ]

          window = sg.Window('下拉列表元素', layout)
          while True:
              event, values = window.read()
              if event == sg.WIN_CLOSED or event == 'Exit':
                  break
              print(event, values)
          window.close()


          一個簡易的進度條:

          # 一個簡易的進度條
          import PySimpleGUI as sg

          sg.theme('Dark Blue 8')

          for i in range(1000):
              sg.OneLineProgressMeter('One Line Meter Example', i + 1, 1000, 'key')


          更多的案例,大家可以查看官方的demo文檔:https://pysimplegui.readthedocs.io/en/latest/cookbook

          學(xué)習(xí)Python就是為了不重復(fù)造輪子,初期,想要快速創(chuàng)建自己的GUI程序,可以在文檔中復(fù)制需要的實例,調(diào)試修改成自己需要的最終界面,研究它們的設(shè)計模式和邏輯,慢慢你也能寫出那些高大上的軟件了。

          如果覺得有用,歡迎點贊分享!


          超詳細的 PyCharm 教程,必須收藏!


          爬蟲 | 不用逆向捅穿Cloud Flare的5秒盾


          瀏覽 180
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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在线精品一区二区 | 天天上天天干 | 国产第一页在线观看 | 操操操操操操操操操操操操逼 |