iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
Software Development

實戰 Python x PyQt5 軟體介面設計系列 第 25

( Day 25 ) Layout 佈局 ( Form 表單 )

  • 分享至 

  • xImage
  •  

這篇教學會介紹如何透過 PyQt5 視窗裡的 QFormLayout() 方法,進行元件的 Form 表單佈局。

原文參考:Layout 佈局 ( Form 表單 )

因為 Google Colab 不支援 PyQt5,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。

PyQt5 教學 - Layout 佈局 ( Form 表單 )

建立 Form 網格佈局

當 PyQt5 建立視窗後,視窗本身是一個 Widget,因此只要使用 QFormLayout() 方法,就可以在視窗 Widget 上建立 Form 表單佈局的「layout」,當 QFormLayout 建立後,預設只會有兩個欄位,一個是 QLabel 文字,另一個是 QLineEdit 單行輸入框或 QPlainTextEdit 多行輸入框

下方的程式碼使用 addRow(text, input) 方法在 QFormLayout 中增加內容,執行結果會出現三個「文字 + 輸入框」。

from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()
Form.setWindowTitle('oxxo.studio')
Form.resize(300, 200)

label1 = QtWidgets.QLabel('AAA')
input1 = QtWidgets.QLineEdit(Form)
label2 = QtWidgets.QLabel('BBB')
input2 = QtWidgets.QLineEdit(Form)
label3 = QtWidgets.QLabel('CCC')
input3 = QtWidgets.QPlainTextEdit(Form)

box = QtWidgets.QWidget(Form)          # 建立放置 QFormLayout 的 Widget
box.setGeometry(10,10,200,150)

layout = QtWidgets.QFormLayout(box)    # 建立 QFormLayout
layout.addRow(label1, input1)          # QFormLayout 加入一列,內容為文字 + 輸入框
layout.addRow(label2, input2)          # QFormLayout 加入一列,內容為文字 + 輸入框
layout.addRow(label3, input3)          # QFormLayout 加入一列,內容為文字 + 輸入框

Form.show()
sys.exit(app.exec_())

PyQt5 教學 - Layout 佈局 ( Form 表單 )

調整排列方式

QFormLayout 提供三種排列方式,可以設定文字與輸入框的位置:

排列方式 說明
QtWidgets.QFormLayout.DontWrapRows 預設,文字左邊,輸入框右邊,文字長度過長會自動截斷。
QtWidgets.QFormLayout.WrapLongRows 文字左邊,輸入框右邊,文字長度過長會將輸入框改到文字下方。
QtWidgets.QFormLayout.WrapAllRows 文字上面,輸入框下面。

延伸上面的程式碼,透過不同方法,設定出不同的排列方式。

layout.setRowWrapPolicy(QtWidgets.QFormLayout.DontWrapRows)

PyQt5 教學 - Layout 佈局 ( Form 表單 )

layout.setRowWrapPolicy(QtWidgets.QFormLayout.WrapLongRows)

PyQt5 教學 - Layout 佈局 ( Form 表單 )

layout.setRowWrapPolicy(QtWidgets.QFormLayout.WrapAllRows)

PyQt5 教學 - Layout 佈局 ( Form 表單 )

更多 Python 教學

大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我已經寫了超過 400 篇 Python 的教學,有興趣可以參考下方連結呦~ ^_^


上一篇
( Day 24 ) Layout 佈局 ( Gird 網格 )
下一篇
( Day 26 ) QTimer 定時器
系列文
實戰 Python x PyQt5 軟體介面設計35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言