PyQt5程式設計(23):在視窗中佈局元件—絕對定位

weixin_34138377發表於2018-01-01
當將幾個元件放置在視窗中時,要考慮他們的相對位置和最小尺寸的問題。預設的視窗大小是可以改變的,因此,有必要攔截resizing 事件,調整每個部件的位置和大小。 PyQt庫提供許多具有這些功能的元件 - 容器。我們所需要的是選擇正確的容器,以特定順序新增元件,然後將容器放在視窗或另一個容器中。
1.絕對定位
在討論容器之前,讓我們考慮元件在視窗中的絕對定位。如果在建立元件時指定了其他父元件,那麼他的預設顯示位置為座標(0,0)。也就是說,如果新增了多個元件,它們將全部顯示在相同的位置,彼此重疊。最後一個新增的元件將位於此堆的頂部,其餘元件將僅部分可見或根本不可見。新增的元件的大小取決於他的內容。
要移動元件,可以使用move()方法;調整其大小用resize()方法。同時更改位置和大小,可使用setGeometry()方法。
下面程式碼為在視窗中顯示題字和按鈕,並指定每個元件的位置和尺寸。

-- coding: utf-8 --

from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
window = QtWidgets.QWidget()
window.setWindowTitle("元件的絕對定位")
window.resize(300, 120)
label = QtWidgets.QLabel("Label元件", window)
button = QtWidgets.QPushButton("按鈕元件", window)
label.setGeometry(10, 10, 280, 60)
button.resize(280, 30)
button.move(10, 80)
window.show()
sys.exit(app.exec_())

絕對定位的缺點:

視窗變化時,要在程式碼中對每個元件的位置及大小進行調整;
使用固定大小,標籤元件上的文字可能不能完整顯示。不同作業系統的預設字型並不相同,所以固定大小難以實現跨平臺。此外,由於同一內容的不同語言文字長度存在差異,使用固定大小也難以實現程式介面的跨語言。

相關文章