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 importqtwidgets
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的核心機制 訊號 是由物件或控制項傳送出去的訊息。按鈕的單擊事件 當單擊按鈕的時候,按鈕會向外部傳送單擊的訊息,這些傳送出去的訊號需要一些 來攔截,這些 就是槽 槽本質上是乙個函式或者方法 更直接的理解 訊號是單擊事件,槽是單擊...