PyQt5學習筆記(九):水平、垂直布局

對于一個GUI應用,界面的布局管理是很重要的一部分,簡單地說,就是我們?nèi)绾畏胖弥皩W習的QLabelQWidget這些部件。在Qt里,你可以通過自己設置絕對位置來實現(xiàn),當然更值得推薦的方式是通過Qt的layout類,現(xiàn)在我們先學習水平和垂直布局。

這里會用到兩個基本的布局類,QVBoxLayoutQHBoxLayout,V代表Vertical,H代表Horizontal,分別控制豎向和橫向的布局。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout

class Exp(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        okbutton = QPushButton('Ok')
        cancelbutton = QPushButton('Cancel')

        hbox = QHBoxLayout()
        hbox.addStretch()
        hbox.addWidget(okbutton)
        hbox.addWidget(cancelbutton)

        vbox = QVBoxLayout()
        vbox.addStretch()
        vbox.addLayout(hbox)

        self.setLayout(vbox)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Layout Management')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Exp()
    sys.exit(app.exec_())

通過以上的代碼,我們將兩個按鈕放置在了窗口的右下角,即使我們調(diào)整窗口的大小,他們相對于窗口的位置還是右下角,這相對于設置絕對位置而言更具優(yōu)勢和靈活性。

hbox = QHBoxLayout()
hbox.addStretch()
hbox.addWidget(okbutton)
hbox.addWidget(cancelbutton)

以上的代碼,我們先創(chuàng)建了一個水平布局,然后把okbutton,cancelbutton放置在這個布局里面,這里還添加了一個addStrtch(),它的作用是在布局中添加空白,并把非空白內(nèi)容頂?shù)讲季值奈膊浚▽τ?code>QHBoxLayout()而言是右邊,對于QVBoxLayout()而言是底部),這也是按鈕始終能夠在窗口右下角的原因。

vbox = QVBoxLayout()
vbox.addStretch()
vbox.addLayout(hbox)

這里創(chuàng)建了一個豎向的布局,把之前創(chuàng)建的水平向布局作為豎向布局的一個部件(在這里也是唯一的部件)添加進來,同樣用到了addStretch()

self.setLayout(vbox)

我們之前創(chuàng)建了兩個布局,但這兩個布局不是平等的,而是包含關系,水平布局只是豎向布局的一個部件,所以豎向布局是這個界面的總布局,我們通過setLayout(bbox)來應用豎向布局。

界面布局
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接:https://github.com/opendigg/awesome-github-android-u...
    IM魂影閱讀 32,968評論 6 472
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,903評論 22 665
  • 翻譯自“Auto Layout Guide”。 1 入門 1.1 理解自動布局 自動布局根據(jù)視圖層級結(jié)構(gòu)中視圖上的...
    lakerszhy閱讀 3,722評論 3 26
  • 總結(jié) 布局的計算過程 如果設置了最小尺寸(或者最小尺寸提示)、最大尺寸,則組件獲取的空間不能超過這些限制 如果沒有...
    勤勞的悄悄閱讀 1,589評論 0 0
  • 今天講的SPI通訊: SPI是同步全雙工串行總線,由4根線組成,分別是MOSI(從向主發(fā)),MISO(主向從發(fā)) ...
    我叫趙健閱讀 152評論 0 0