<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桌面圖形程序美化的方法論

          共 2738字,需瀏覽 6分鐘

           ·

          2021-06-25 03:22

          擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          千尋鐵鎖沉江底,一片降幡出石頭。

          很多人都吐槽,使用 Tkinter、PyQt5等工具制作出來的圖形界面程序太丑了。既然覺得它丑,我們來想想,它為什么會(huì)那么丑。

          功能性是開發(fā)的第一要?jiǎng)?wù)

          每一個(gè) Python 圖形界面庫都有它自有的功能特性和界面特性。一般來說,這些庫的開發(fā)者著重要考慮的是功能性的實(shí)現(xiàn)。比如、列表框、拖拽框、懸浮框、自定義控件、webview等。

          一個(gè)圖形界面庫,受不受開發(fā)者的歡迎,首先在于它提供的功能是否全面和強(qiáng)大。

          如果僅僅是炫酷和好看,如果功能上有所缺失,其應(yīng)用也只能在小范圍和特定領(lǐng)域內(nèi)得到擁簇。會(huì)導(dǎo)致一種“初遇時(shí)驚艷,永久后坑多”的狀態(tài)。

          模塊提供的都是原生組件

          為了便于理解,我們在這里把桌面圖形界面的開發(fā)(以PyQt5為例)和Web前端開發(fā)進(jìn)行一下不嚴(yán)謹(jǐn)?shù)年P(guān)聯(lián)對應(yīng)。

          • PyQt5 中的各種控件(QPushButton、QLineEdit、QCheckBox等)對應(yīng)于 HTML 中的各類元素標(biāo)簽(<a>、<p><h>),用于基礎(chǔ)結(jié)構(gòu)的編排。

          • PyQt5 中的 QSS 對應(yīng)于 HTML 中的 CSS,用于對樣式的控件。

          • PyQt5 中的信號(hào)槽 對應(yīng)于 HTML 中的 JavaScript,用于對行為交互的控制。

          在不引入任何 CSS 和 JavaScript 的情況下,HTML 中編寫的任何標(biāo)簽,在瀏覽器中顯示的都是最原始的形狀和樣式。

          1. <html>

          2. <h1>州的先生</h1>

          3. <a href="https://zmister.com"></a>

          4. <input type="text" placeholder="表單輸入框" />

          5. <button>一個(gè)按鈕</button>

          6. <select>

          7. <option>一個(gè)選項(xiàng)</option>

          8. <option>兩個(gè)選項(xiàng)</option>

          9. </select>

          10. </html>

          上述 HTML 代碼在瀏覽器中將會(huì)顯示為如下圖所示:

          是不是也是很丑不美觀?那就對了。沒有經(jīng)過樣式定義的 HTML 標(biāo)簽元素就是這樣丑。

          而現(xiàn)代Web開發(fā)中,幾乎所有頁面的元素標(biāo)簽都是依照設(shè)計(jì)原型,引用 UI 組件或自寫CSS,對界面的外觀進(jìn)行美化的。

          下圖是比較知名的前端 UI 庫 ElementUI 提供的按鈕組件:

          通過審查元素,可以看到,其用 CSS 對按鈕元素進(jìn)行了很多改造:

          同理,在 Python 的圖形界面開發(fā)中,我們僅僅是使用了庫提供的原生控件和布局,將一個(gè)圖形界面元素的基礎(chǔ)框架構(gòu)建出來了,并沒有對其樣式進(jìn)行任何美化和修飾。這樣編寫出來的圖形界面程序,肯定會(huì)讓人覺得丑。

          界面的美化的幾個(gè)關(guān)鍵點(diǎn)

          通過上面對 Web 頁面的對應(yīng),我們知道了我們編寫的圖形界面程序?yàn)槭裁床幻烙^。

          如何解決,州的先生根據(jù)實(shí)際經(jīng)驗(yàn)給出如下的建議:

          有一個(gè)好的設(shè)計(jì)原型

          不是要大家去兼修 UI 設(shè)計(jì),而是在構(gòu)建一個(gè)圖形界面之前,對程序的布局,結(jié)構(gòu)有一個(gè)清晰明確的原型。就算是使用網(wǎng)格布局,也應(yīng)該設(shè)計(jì)好各個(gè)控件在網(wǎng)格的位置和距離。

          在有原型之后,可以參考一下現(xiàn)有的消費(fèi)端桌面軟件(QQ音樂之類的)或者上站酷之類的設(shè)計(jì)網(wǎng)站上看看專業(yè) UI 設(shè)計(jì)師作品的樣式和色彩搭配。


          在這里,色彩搭配是一個(gè)雷區(qū)。好的色彩搭配讓程序界面賞心悅目,差的色彩搭配,讓人覺得粗制濫造。

          充分利用QSS

          Qt 提供了 QSS 這個(gè)特性讓開發(fā)者可以自定義小部件的外觀,其支持各種屬性、子狀態(tài)和控件。

          充分利用好 QSS 來配置界面,圖形界面的美化工作可以完成 80% 到 90%。

          QSS 支持很多種控件進(jìn)行配置,由于列表過長,在此就不一一列舉出來。貼出 Qt 官方文檔中關(guān)于 Qt Style Sheets Reference 的鏈接,大家可以在上面查看:

          https://doc.qt.io/qt-5/stylesheet-reference.html

          同時(shí),Qt 官方文檔中還提供了很多控件使用 QSS 美化的示例,大家也可以參考一下,鏈接為:

          https://doc.qt.io/qtforpython/overviews/stylesheet-examples.html

          利用控件的自有屬性

          QSS 能夠完成 80% 到 90% 的界面美化工作,但是還有 10% 到 20% 的場景,QSS 表示心有余而力不足。

          什么場景呢?比如窗口邊框的處理、窗口默認(rèn)三劍客(最小化、最大化、關(guān)閉)的處理。

          面對這一類的處理,就得利用各個(gè)控件的自有屬性來配置了。如果知道控件的自有屬性有哪些呢?答案當(dāng)然還是看文檔。在此個(gè)例子:

          QProgressBar()是進(jìn)度欄控件,它的默認(rèn)樣式如下圖所示:

          我們在官方文檔中可以看到它有如下的方法可供調(diào)用:

          顯然,那幾個(gè)set開頭的方法,就是可以直接對控件進(jìn)行配置的方法:

          • setAlignment():用于設(shè)置進(jìn)度條的對其方式;

          • setFormat():用于設(shè)置進(jìn)度條的文本格式;

          • setInvertedAppearance():用于設(shè)計(jì)進(jìn)度條是否反轉(zhuǎn)增長;

          • setMaximum():用于設(shè)置進(jìn)度條的最大值;

          • setMinimum():用于設(shè)置進(jìn)度條的最小值;

          • setOrientation():用于設(shè)置進(jìn)度條的布局,是水平還是垂直;

          這樣,通過控件的自有屬性,我們可以對控件的那些QSS無法處理的基礎(chǔ)樣式進(jìn)行自定義。

          總而言之,需要多翻閱文檔。

          最后,用一個(gè) PyQt5 美化的音樂播放器界面鎮(zhèn)文,希望大家編寫的圖形界面程序都德藝雙馨,秀外慧中。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 54
          點(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>
                  一级AA毛片 | 美女口鸡免费网站 | 日本激情视频 | 无码人妻一区二区三区在线神菜美 | 中文字幕第9页 |