1. 程式人生 > 程式設計 >python GUI庫圖形介面開發之PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項

PyQt5佈局控制元件QFormLayout簡介

QFormLayout是label-field式的表單佈局,顧明思議,就是實現表單方式的佈局,表單是提示使用者進行互動的一種模式,主要有兩列組成,第一列用於顯示資訊,給使用者提示,一般叫做label域,第二列需要使用者進行選擇或輸入,一般叫做field域,label與field的關係就是label關聯field

QFormLayout表單佈局的使用例項

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QFormLayout,QLineEdit,QLabel
class Winform(QWidget):
  def __init__(self,parent=None):
    super(Winform,self).__init__(parent)
    self.setWindowTitle("窗體佈局管理例子") 
    self.resize(400,100) 
    fromlayout = QFormLayout()
    labl1 = QLabel("標籤1")
    lineEdit1 = QLineEdit()
    labl2 = QLabel("標籤2")
    lineEdit2 = QLineEdit()
    labl3 = QLabel("標籤3")
    lineEdit3 = QLineEdit()
    fromlayout.addRow(labl1,lineEdit1)
    fromlayout.addRow(labl2,lineEdit2)
    fromlayout.addRow(labl3,lineEdit3)
    //fromlayout->setRowWrapPolicy(QFormLayout::WrapLongRows);//該引數通常適用於小螢幕中,當標籤和文字框在本行顯示不全時,文字框會顯示在下一行,使得標籤獨佔一行
    fromlayout->setLabelAlignment(Qt::AlignLeft);//設定標籤的對齊方式
    self.setLayout(fromlayout)  
if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    form = Winform()
    form.show()
    sys.exit(app.exec_())

執行效果示意圖

python GUI庫圖形介面開發之PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項

setRowWrapPolicy(RowWrapPolicy policy)函式的引數有三個可選項:

QFormLayout::DontWrapRows:該引數的含義是文字框總是出現在標籤的後面,其中標籤被賦予足夠的水平空間以適應表單中出現的最寬的標籤,其餘的空間被賦予文字框。

QFormLayout::WrapLongRows:該引數通常適用於小螢幕中,當標籤和文字框在螢幕的當前行顯示不全時,文字框會顯示在下一行,使得標籤獨佔一行。

QFormLayout::WrapAllRows:該引數表示標籤總是在文字框的上一行。

分別對應的結果如下:

python GUI庫圖形介面開發之PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項

python GUI庫圖形介面開發之PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項

QFormLayout佈局管理器巢狀

根據AddRow函式的引數來看我們在新增表單項除了可以新增Widget元件以外還可以新增其他的佈局管理器。

QFormLayout* layout = new QFormLayout();//頂級佈局管理器
QVBoxLayout* vlayout = new QVBoxLayout();//被巢狀使用的佈局管理器
QLineEdit* text1 = new QLineEdit();
QLineEdit* text2 = new QLineEdit();
QLineEdit* text3 = new QLineEdit();
vlayout->addWidget(text2);//子管理器佈局
vlayout->addWidget(text3);
layout->addRow("Name:",text1);//往QFormLayout中新增表項
layout->addRow("Tel:",vlayout);
layout->setSpacing(10);
setLayout(layout);//設定頂級佈局管理器
this->setWindowTitle("FTP");

輸出結果為:

python GUI庫圖形介面開發之PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項

小結

  • QFormLayout以表單的形式進行管理介面元件
  • 通過使用QFormLayout可以發現其設定比較簡潔明瞭
  • QFormLayout和QBoxLayout以及QGridLayout一樣都支援佈局管理器的巢狀使用

本文主要講解了PyQt5表單佈局控制元件QFormLayout詳細使用方法與例項,更多關於PyQt5佈局控制元件使用方法請檢視下面的相關連結