<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>

          丟棄 Tkinter!幾行代碼快速生成漂亮 GUI!

          共 2904字,需瀏覽 6分鐘

           ·

          2022-01-15 18:14

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

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


          文 |
          ?閑歡??
          來源:Python 技術(shù)「ID: pythonall」


          大家好,我是龍哥!

          Python 的 GUI 框架并不少,其中 Tkinter,wxPython,Qt 和 Kivy 是幾種比較主流的框架。此外,還有不少在上述框架基礎(chǔ)上封裝的簡化框架,例如 EasyGUI,PyGUI 和 Pyforms 等。

          但問題在于,對于初學(xué)者而言,即使是最簡單的主流框架,他們也無從下手;就算選擇封裝過的(簡化)框架,但仍難以甚至無法創(chuàng)建自定義 GUI 布局。即便學(xué)會了某種(簡化)框架,也需要編寫連篇累牘的代碼。

          PySimpleGUI 嘗試解決上述 GUI 難題,它提供了一種簡單明了、易于理解、方便自定義的 GUI 接口。它誕生于2018年,設(shè)計(jì)宗旨是 “Simplicity is the ultimate sophistication” (簡單即美)。

          PySimpleGUI 包含了絕大多數(shù)原本需要用戶界面構(gòu)建編寫的函數(shù),不僅如此,它還具有 Auto-packer 技術(shù),可以自動創(chuàng)建界面,使用者不需要像 tkinter 那樣使用布局管理器。

          安裝

          和其他的模塊一樣,直接使用 pip 安裝即可:

          pip install PySimpleGUI

          使用步驟

          一般使用 PySimpleGUI 都有固定套路,只要我們記住這個(gè)套路,其實(shí)就是使用 PySimpleGUI 的步驟,就能很容易地使用 PySimpleGUI 創(chuàng)建 GUI。

          1.import 庫 2.創(chuàng)建 layout UI 布局 3.window 窗口顯示 4.Event loop 事件循環(huán),用戶持續(xù)交互 5.close 關(guān)閉窗口

          下面詳細(xì)講解一下這些步驟。

          import 庫

          ?import?PySimpleGUI?as?sg

          這個(gè)是 PySimpleGUI 官方推薦的寫法。

          創(chuàng)建 layout 布局

          這里的 layout 布局,其實(shí)就是畫一些小部件,這些小部件就是你最終界面的一些元素組成,例如按鈕、復(fù)選框、文本框等。

          layout?=?[
          ????[sg.Text('一句話概括Python')],
          ????[sg.Input(key='-INPUT-')],
          ????[sg.Button('確認(rèn)'),?sg.Button('取消')]?
          ]

          我們上面代碼中就包含標(biāo)簽、文本輸入框、確認(rèn)和取消按鈕。

          需要注意的是,PySimpleGUI 自動按行布局,所以我們需要把對應(yīng)行中的所有部件放到一個(gè)列表中,如上“確認(rèn)”與“取消”按鈕放在一個(gè)列表中,兩個(gè)文本部件放到一個(gè)列表中,最后形成一個(gè)嵌套列表layout。

          window 窗口顯示

          定義好 layout 之后,我們只需要將其放在 window 窗口中就行了:

          window?=?sg.Window('PySimpleGUI?Demo',?layout)

          循環(huán)監(jiān)聽事件

          我們定義了一個(gè)窗體,需要監(jiān)聽用戶在我們的窗體界面上的輸入操作來給與不同的事件處理。PySimpleGUI 給出的方案是通過構(gòu)建一個(gè)循環(huán)來監(jiān)聽用戶的輸入:

          while?True:
          ???event,?values?=?window.read()
          ???if?event?in?(None,?'取消'):
          ???????break

          這里監(jiān)聽到 None(右上角的關(guān)閉)和“取消”按鈕事件,就退出循環(huán)。

          關(guān)閉窗口

          關(guān)閉窗口就一行代碼:

          window.close()

          完整代碼

          import?PySimpleGUI?as?sg

          layout?=?[
          ????[sg.Text('一句話概括Python')],
          ????[sg.Input(key='-INPUT-')],
          ????[sg.Button('確認(rèn)'),?sg.Button('取消')]
          ]
          window?=?sg.Window('PySimpleGUI?Demo',?layout)
          while?True:
          ????event,?values?=?window.read()
          ????print(event)
          ????print(values)
          ????if?event?in?(None,?'取消'):
          ????????break
          window.close()

          這里我將監(jiān)聽到的事件和獲取到的值打印到控制臺。

          運(yùn)行效果截圖:

          當(dāng)我輸入文本,然后點(diǎn)擊“確定”按鈕時(shí),控制臺會打印如下內(nèi)容:

          確認(rèn)
          {'-INPUT-':?'人生苦短,我愛Python'}

          傳遞值

          PySimpleGUI 傳遞值的方式不同于其他的 GUI,它是通過相同關(guān)鍵詞進(jìn)行綁定的。

          import?PySimpleGUI?as?sg

          layout?=?[
          ????[sg.Text('一句話概括Python')],
          ????[sg.Input(key='-INPUT111-')],
          ????[sg.Input(key='-INPUT222-')],
          ????[sg.Button('確認(rèn)'),?sg.Button('取消')],
          ????[sg.Text('輸出:'),?sg.Text(key='-OUTPUT-')]
          ]
          window?=?sg.Window('PySimpleGUI?Demo',?layout)
          while?True:
          ????event,?values?=?window.read()
          ????print(event)
          ????print(values)
          ????if?event?in?(None,?'取消'):
          ????????break
          ????else:
          ????????window['-OUTPUT-'].update(values['-INPUT222-'])
          window.close()

          我們再擴(kuò)展一下上面的例子,我界面上有兩個(gè)輸入框,然后底下有一個(gè)輸出行來顯示輸入框輸入的內(nèi)容。

          運(yùn)行之后的界面如下:

          當(dāng)我在兩個(gè)輸入框分別輸入內(nèi)容時(shí),只有第二個(gè)輸入框的內(nèi)容會顯示在底下,這是因?yàn)槲覍⒌诙€(gè)輸入框的 key('-INPUT222-') 綁定在了底下的輸出行中。

          切換主題

          PySimpleGUI 提供了很多其他主題供我們選擇:

          你可以通過如下代碼來查看主題:

          sg.preview_all_look_and_feel_themes()

          切換主題的方式為:

          sg.change_look_and_feel("GreenMono")

          總結(jié)

          本文給大家介紹了一款非常簡單實(shí)用的 GUI 神器,無需堆積如山的代碼就可以打造一款簡潔的 GUI,對初學(xué)者非常友好,也是快速生成 GUI 界面的不二選擇。

          推薦閱讀

          1. 最新版Pycharm 2021.3最新激活教程,有效期到2099年!

          2. 穩(wěn)了!35K!字節(jié)商業(yè)數(shù)據(jù)分析崗!

          3. 快收藏??!整理了100個(gè)Python小技巧??!

          4. 搞到了!《網(wǎng)易數(shù)據(jù)分析指南》免費(fèi)領(lǐng)!


          瀏覽 48
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  成人影音先锋AV免费电影 | 性交在线观看视频网站 | 久久久久三级 | 无套内射人妻 | 国产亚洲视频在线 |