PyQt5 筆記(01) 巢狀布局

2021-09-22 07:19:15 字數 4231 閱讀 7995

pyqt5 有四種布局:水平(qhboxlayout)、豎直(qvboxlayout)、網格(qgridlayout)、表單(qformlayout)

在窗體中單一的布局應該不難,但若是比較複雜的布局,一般涉及到布局的巢狀,這就頭疼了。

1. 布局不能直接巢狀(如果我錯了,歡迎指正!)

2.內層的布局必須先「附著」在乙個空 qwidget

3. 然後把這個「承載」著內層布局的空部件新增至外層布局

4. 最後,別忘記把全域性布局「附著」到窗體本尊

下面對布局進行分析

全域性布局使用了乙個水平布局

四個區域性布局分別使用了水平布局、豎直布局、網格布局、表單布局

到這裡,其實開始時我產生了乙個很自然,但是錯誤的想法:把四個區域性布局直接新增到全域性布局內:

12

3

4

wlayout.addwidget(hlayout)

wlayout.addwidget(vlayout)

wlayout.addwidget(glayout)

wlayout.addwidget(flayout)

這給了我啟示:

先準備四個 qwidget: hwg, vwg, gwg, fwg

12

3

4

hwg=qtwidgets.qwidget()

vwg=qtwidgets.qwidget()

gwg=qtwidgets.qwidget()

fwg=qtwidgets.qwidget()

然後用這四個 qwidget 分別去設定前面四個區域性布局

12

3

4

hwg.setlayout(hlayout)

vwg.setlayout(vlayout)

gwg.setlayout(glayout)

fwg.setlayout(flayout)

再把這四個 qwidget 部件新增至全域性變數

12

3

4

wlayout.addwidget(hwg)

wlayout.addwidget(vwg)

wlayout.addwidget(gwg)

wlayout.addwidget(fwg)

最後一步,把全域性布局應用到窗體本尊

1self.setlayout(wlayout)

from pyqt5 import

qtwidgets

class

mywindow(qtwidgets.qwidget):

def__init__

(self):

super().

__init__

() self.setwindowtitle(

'pyqt5布局示例')

#開始:

wlayout = qtwidgets.qhboxlayout() #

全域性布局(1個):水平

hlayout = qtwidgets.qhboxlayout() #

區域性布局(4個):水平、豎直、網格、表單

vlayout =qtwidgets.qvboxlayout()

glayout =qtwidgets.qgridlayout()

flayout =qtwidgets.qformlayout()

hlayout.addwidget(qtwidgets.qpushbutton(str(1))) #

區域性布局新增部件(例如:按鈕)

hlayout.addwidget(qtwidgets.qpushbutton(str(2)))

vlayout.addwidget(qtwidgets.qpushbutton(str(3)))

vlayout.addwidget(qtwidgets.qpushbutton(str(4)))

glayout.addwidget(qtwidgets.qpushbutton(str(5)),0,0)

glayout.addwidget(qtwidgets.qpushbutton(str(6)),0,1)

glayout.addwidget(qtwidgets.qpushbutton(str(7)),1,0)

glayout.addwidget(qtwidgets.qpushbutton(str(8)),1,1)

flayout.addwidget(qtwidgets.qpushbutton(str(9)))

flayout.addwidget(qtwidgets.qpushbutton(str(10)))

flayout.addwidget(qtwidgets.qpushbutton(str(11)))

flayout.addwidget(qtwidgets.qpushbutton(str(12)))

hwg = qtwidgets.qwidget() #

準備四個部件

vwg =qtwidgets.qwidget()

gwg =qtwidgets.qwidget()

fwg =qtwidgets.qwidget()

hwg.setlayout(hlayout)

#四個部件設定區域性布局

vwg.setlayout(vlayout)

gwg.setlayout(glayout)

fwg.setlayout(flayout)

wlayout.addwidget(hwg)

#四個部件加至全域性布局

wlayout.addwidget(vwg)

wlayout.addwidget(gwg)

wlayout.addwidget(fwg)

self.setlayout(wlayout)

#窗體本尊設定全域性布局

if__name__=="

__main__

":

import

sys

win =mywindow()

win.show()

qt布局巢狀 pyqt5 巢狀布局

usr bin python coding utf 8 author jatvsjat datetime 2019 8 24 12 19 software pycharm import sys class mywindow qwidget def init self super init self....

PyQt5筆記 00 簡介

pyqt5是digia公司的應用程式框架qt5的python定製模組集。對於python 2.x 和 3.x 都有效。本教程使用python 3。qt庫是最強大的gui庫之一。pyqt5的官方 是 www.riverbankcomputing.co.uk news。pyqt5由riverbank c...

PyQt5筆記 訊號與槽

訊號 signal 槽 slot 訊號與槽是qt的核心機制,也是pyqt的核心機制 訊號 是由物件或控制項傳送出去的訊息。按鈕的單擊事件 當單擊按鈕的時候,按鈕會向外部傳送單擊的訊息,這些傳送出去的訊號需要一些 來攔截,這些 就是槽 槽本質上是乙個函式或者方法 更直接的理解 訊號是單擊事件,槽是單擊...