PyQt - 佈局管理



可以透過指定以畫素為單位測量的絕對座標,將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 提供了佈局類,用於更優雅地管理容器內小部件的位置。與絕對定位相比,佈局管理器的優點是:

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

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

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

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

序號 類和描述
1 QBoxLayout

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

2 QGridLayout

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

3 QFormLayout

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

廣告
© . All rights reserved.