PyQt5 - 佈局管理



可以透過指定以畫素為單位的絕對座標,將 GUI 部件放置在容器視窗內。座標相對於由 setGeometry() 方法定義的視窗尺寸。

setGeometry() 語法

QWidget.setGeometry(xpos, ypos, width, height)

在下面的程式碼片段中,尺寸為 300x200 畫素的頂級視窗顯示在顯示器上的 (10, 10) 位置。

import sys
from PyQt4 import QtGui

def window():
   app = QtGui.QApplication(sys.argv)
   w = QtGui.QWidget()
	
   b = QtGui.QPushButton(w)
   b.setText("Hello World!")
   b.move(50,20)
	
   w.setGeometry(10,10,300,200)
   w.setWindowTitle(“PyQt”)
   w.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   window()

一個 **PushButton** 部件被新增到視窗中,並放置在視窗左上角位置向右 50 畫素,向下 20 畫素的位置。

然而,這種絕對定位由於以下原因並不合適:-

  • 即使調整視窗大小,部件的位置也不會改變。

  • 在具有不同解析度的不同顯示裝置上,外觀可能不一致。

  • 佈局的修改比較困難,因為可能需要重新設計整個表單。

Original and Resized Window

PyQt API 提供了佈局類,用於更優雅地管理容器內部件的定位。與絕對定位相比,佈局管理器具有以下優點:-

  • 視窗內的部件會自動調整大小。

  • 確保在具有不同解析度的顯示裝置上外觀一致。

  • 可以動態新增或刪除部件,而無需重新設計。

Qt 工具包定義了各種佈局,可用於 Qt Designer 實用程式。

Display Class

以下是我們將在此章節中逐一討論的類列表。

序號 類與描述
1 QBoxLayout

QBoxLayout 類垂直或水平地排列部件。它的派生類是 QVBoxLayout(用於垂直排列部件)和 QHBoxLayout(用於水平排列部件)。

2 QGridLayout

GridLayout 類物件以網格的形式呈現,網格中的單元格按行和列排列。該類包含 addWidget() 方法。可以透過指定單元格的行數和列數來新增任何部件。

3 QFormLayout

QFormLayout 是一種建立兩列表單的便捷方法,其中每一行都包含一個與標籤關聯的輸入欄位。按照慣例,左列包含標籤,右列包含輸入欄位。

廣告

© . All rights reserved.