<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 創(chuàng)建用戶界面之 PyQt5 的使用

          共 1783字,需瀏覽 4分鐘

           ·

          2020-06-01 23:22


          之前給大伙介紹了下?tkinter,有朋友希望小帥b對其它的 Python ?GUI 框架也說道說道,那么今天就來說說 PyQt5 如何創(chuàng)建用戶界面。


          d5b509e196ae17d88ecfeb0792f8525f.webp


          Qt 是用 C++ 寫的開發(fā)工具,其中包含一個非常強(qiáng)大的?GUI 框架,寫出來的程序可以輕松運(yùn)行在不同的操作系統(tǒng)中, PyQt 就是用 Python 基于它實(shí)現(xiàn)的,這樣我們可以使用 Python 來調(diào)用 Qt 中的 C++ 方法,?從而簡單的實(shí)現(xiàn)用戶界面程序,構(gòu)建的時候也不會犧牲 C++ 的速度。



          b65d702f8e02619ed8733361748d9f1f.webp


          還有,它可以運(yùn)行在 Windows,Linux,Android,MacOS,iOS 等常見的系統(tǒng)里面。

          那么,怎么玩它呢?接下來就是:


          學(xué)習(xí) Python 的正確姿勢

          69cc30896e41f38545f687f9971b179c.webp


          如果你之前沒有安裝過 PyQt5 的話可以使用 pip 安裝一下:
          pip install?PyQt5
          安裝完了之后,首先導(dǎo)入 PyQt5


          2dfc97d3f2900d1fc1f2df2d64a73c89.webp


          接著可以創(chuàng)建一下窗口,繼承 QMainWindow, 然后想在自己的窗口中干嘛就干嘛,這里先定義一下窗口的標(biāo)題:



          c426bdee7daa5db83b17fe9d237eff3e.webp


          接著創(chuàng)建 app:



          ad1fd45d567aea164d7ea2f15d04158e.webp


          這里傳入了 sys.argv 主要是用來接收命令行傳入的參數(shù),如果你不需要的話,直接傳個空 list 也是可以的:



          9f236bb91fe83ad6b86782aa27075d77.webp


          接著我們把剛剛的窗口實(shí)例化一下,show 出來:



          fad23a2725446834305e6784a0ae9967.webp


          最后讓 app 循環(huán)等待交互:



          8f616bee882329ffe829e3bed1bdd1cf.webp


          運(yùn)行一波,一個可愛的小窗口躍然于你我的心中:


          f7154f5805e70b4eace011c55d706b22.webp


          接著我們在這個窗口里面塞點(diǎn)組件吧。
          為了方便,我們直接把所有的組件導(dǎo)進(jìn)來吧:


          f56eb651f585341466c288486521af6a.webp


          每個組件都是一個對象,先來加個文本,可以這樣:



          576e9fe9b967d52aa60f0f2baa676ae0.webp


          運(yùn)行一波就是這樣:



          dd2d7b186eff48bfb1c773ade3688cbd.webp


          一樣的,每個組件的屬性都可以自行設(shè)置樣式和位置:


          2a07945f2a5bda2b15beff58707f131e.webp


          這里我們設(shè)置字體顏色為熟悉的綠色,然后讓它居中對其,其中的 Qt 可以通過 PyQt5.QtCore 導(dǎo)入:


          2c9305326e34d60125189faa8dc96b58.webp


          運(yùn)行一波:


          f84648da315b296fc66ebfc72be02159.webp


          其它的組件等下再介紹,我們先來了解一下 PyQt5 的布局。
          PyQt5 的 Layout 有好幾種,我分別跟你說一下:
          垂直的布局,QVBoxLayout:



          221343398226a1f12b52ecb5576f768c.webp

          我們在這里創(chuàng)建了一個 QVBoxLayout ,并且在剛剛的 Label 下創(chuàng)建了一個按鈕,把這兩組件都塞到這個垂直的 layout 里面去,最后顯示到我們的窗口中,就變成這樣了:


          071131346b3c202e0b8f35896f8c0d97.webp


          水平布局,QHBoxLayout:


          251808b79f628fb5df7a9d0e9410ddaf.webp


          同樣的道理,只不過我們這次換成了水平的 Layout ,運(yùn)行一波就是水平排放了:

          2554fbeb081765b9679c8c7ee30f2c86.webp


          表格布局,QGridLayout:


          bc9332281df81c4bfb2cd551ff0b2d41.webp


          和上次 tkinter 說的一樣,你也可以把一個窗口看成一個表格,這里我們使用 QGridLayout ,然后把組件放在你想放的單元格中去,我們添加了一個 label 和四個 button ,讓它們分別放在不同的單元格中,運(yùn)行一波就是這樣:


          41cd73d2a1bd0ac2a6acf283f278d0a7.webp

          以上這幾個就是常用到的布局方式。

          接著我們再來了解一下按鈕組件的點(diǎn)擊時間綁定,比如我們想當(dāng)用戶點(diǎn)擊 “滾” 的時候,讓 “你被綠了” 變成 “對不起,我錯了!”,可以這樣實(shí)現(xiàn):

          調(diào)用 connect 方法來綁定點(diǎn)擊事件的回調(diào):


          d20b040241ad13a3082ac5c32fe95b3b.webp

          那么這時候點(diǎn)擊的 Button0 的時候就會調(diào)用 changeText 方法:

          f13324ffb71ad5d28ef81a50fb88b8f2.webp

          運(yùn)行一波就是這樣:



          521e8868e8672a27dbbfdd7035efd2e4.webp


          當(dāng)然,你也可以自定義一個按鈕,繼承 QPushButton,然后攔截點(diǎn)擊事件,在自己的按鈕中處理,像這樣創(chuàng)建一個自己的按鈕,然后當(dāng)觸發(fā)鼠標(biāo)點(diǎn)擊按鈕的時候就會調(diào)用 mousePressEvent 方法:



          af6eccf2771752c84395bc966c2d473c.webp


          接著在窗口實(shí)例化一個,然后添加到 Layout 中去:



          4a8be6dc3cdce487254bed25f7f7e6b9.webp


          運(yùn)行一波:


          566b134afc9daa48db62e77ae0153b88.webp


          接著我們來看看彈窗,比如我們想要點(diǎn)擊 “滾啊” 就彈出一個窗口,那么就可以這樣:


          54221f9ac24f2c35aaddae5ec4c735a4.webp




          綁定的 showDialog 方法,這里主要彈出一個輸入確認(rèn)框,當(dāng)用戶按確認(rèn)的時候就改變 Label 的文本內(nèi)容:


          42720cea2bd58b51635ad983458da9f9.webp




          運(yùn)行一波:


          b9c41ff71c09e5b83362f6567c54e053.webp




          當(dāng)然,你完全可以自定義一個 Dialog, 直接繼承 QDialog 然后在里面定義你想要彈窗的內(nèi)容,比如這里我就讓它彈出一個和原本窗口一樣的內(nèi)容:



          eb6603ff5c2553dc1bcf996ee9053457.webp




          當(dāng)點(diǎn)擊 “滾啊” 的時候,實(shí)例化自己的 Dialog :


          6ebe3681a614dca3685df875adea4f41.webp



          這樣就可以彈出自己的窗啦:


          e3174173e842e8c046e0a0a805bdac83.webp




          PyQt5 的其它常用組件用起來也差不多,大概有這么一些:



          05f57d1007a0372c8af8ce6f4811ee18.webp




          運(yùn)行起來是這樣子的:


          8c0f356300ab94bec13663e7f2f11c76.webp




          上面這個組件代碼是官方提供的,考慮到有些 b 友網(wǎng)絡(luò)有毛病,幫你上傳了,在公眾號發(fā)送 5 獲取吧。

          感興趣的話可以到以下鏈接看更多相關(guān)的內(nèi)容:

          https://build-system.fman.io/pyqt5-tutorialhttps://www.qt.io/

          ok,以上就是小帥b今天給你帶來的分享,那么我們下回見,peace
          瀏覽 51
          點(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>
                  亚洲三级理论 | 国产一区二区三区无码 | 国产三级网 | 粉嫩护士小泬18p | 京东热av |