1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 2873字,需瀏覽 6分鐘

         ·

        2022-01-22 08:19


        文 |?閑歡

        來源:Python 技術(shù)「ID: pythonall」

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

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

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

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

        安裝

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

        pip install PySimpleGUI

        使用步驟

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

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

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

        import 庫(kù)

        ?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 自動(dòng)按行布局,所以我們需要把對(duì)應(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)聽到的事件和獲取到的值打印到控制臺(tái)。

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

        當(dāng)我輸入文本,然后點(diǎn)擊“確定”按鈕時(shí),控制臺(tái)會(huì)打印如下內(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()

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

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

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

        切換主題

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

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

        sg.preview_all_look_and_feel_themes()

        切換主題的方式為:

        sg.change_look_and_feel("GreenMono")

        總結(jié)

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

        記得點(diǎn)贊 轉(zhuǎn)發(fā) 在看呀~留言說說你用過或者聽過的好用的python包,我來寫使用感受和教程~

        近期文章:

        【干貨+贈(zèng)書】為什么我們現(xiàn)在不再需要?dú)⒍拒浖耍?/span>

        【干貨】盤點(diǎn)2021最佳數(shù)據(jù)可視化作品

        【干貨】如何打造一個(gè)能自動(dòng)回復(fù)的釘釘機(jī)器人


        如何找到我:

        瀏覽 36
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产超碰人人做人人爱ⅴa | 亚洲 自拍 露出 极品 | 色欲久久伊人大香线蕉影院 | 第五色丁香欧美小说在线观看 | 青娱乐91视频 | 中文字字幕一区二区三区四区五区 | 能看见器官进去的大尺度 | 久久免费小视频 | 伊人久久久久久久久久久久久久久 | 伦理6080 |