PyQt 5ノート(02):ネストレイアウト
4939 ワード
前のノートのように、2つのネストされたレイアウトだけを議論します.
前のレイアウトには、3つの内層レイアウトがある場合、3つの空の部品が必要です.では、10個の内層レイアウトがありますか?明らかに気分が悪い.
さっきQt Designで遊んでいたとき、もっと良い方法を見つけました.何個の内層レイアウトがあっても、空の部品が1つしか必要ありません.
1.「ベアラ」グローバルレイアウト用のグローバル構成部品を準備する
2.グローバルレイアウトの再定義
3.3つのローカルレイアウトを定義する
4.もちろん、ローカルレイアウトには必ず部品を配置する予定です
5.3つのローカルレイアウトをグローバルレイアウトに追加
補足:
上記の考え方に従って、さらに、余分な空の部品を必要としないことができます.
補足:
addLayout()メソッドのプロトタイプ:
addLayout(QLayout, row, col, row_cross, col_cross, Qt.Alignment)
addWidget()メソッドのプロトタイプ:
addWidget(QWidget, row, col, row_cross, col_cross, Qt.Alignment)
前のレイアウトには、3つの内層レイアウトがある場合、3つの空の部品が必要です.では、10個の内層レイアウトがありますか?明らかに気分が悪い.
さっきQt Designで遊んでいたとき、もっと良い方法を見つけました.何個の内層レイアウトがあっても、空の部品が1つしか必要ありません.
一、プロセス分析:
1.「ベアラ」グローバルレイアウト用のグローバル構成部品を準備する
# ( self), " "
wwg = QWidget(self)
2.グローバルレイアウトの再定義
wl = QVBoxLayout(wwg) # ( wwg)
3.3つのローカルレイアウトを定義する
vl = QVBoxLayout() #
hl = QHBoxLayout()
gl = QGridLayout()
4.もちろん、ローカルレイアウトには必ず部品を配置する予定です
pass #
5.3つのローカルレイアウトをグローバルレイアウトに追加
wl.addLayout(vl) #
wl.addLayout(gl)
wl.addLayout(hl)
二、すべてのコード
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt5 ')
self.resize(400, 300)
# ( self), " "
wwg = QWidget(self)
wl = QVBoxLayout(wwg) # ( wwg)
vl = QVBoxLayout() #
hl = QHBoxLayout()
gl = QGridLayout()
pass #
wl.addLayout(vl) #
wl.addLayout(gl)
wl.addLayout(hl)
if __name__=="__main__":
import sys
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
補足:
上記の考え方に従って、さらに、余分な空の部品を必要としないことができます.
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt5 ')
self.resize(400, 300)
# ( self)
wl = QVBoxLayout(self)
#
vl = QVBoxLayout()
hl = QHBoxLayout()
gl = QGridLayout()
#
hl.addWidget(QPushButton('1'))
hl.addWidget(QPushButton('2'))
vl.addWidget(QPushButton('3'))
vl.addWidget(QPushButton('4'))
vl.addWidget(QPushButton('5'))
gl.addWidget(QPushButton('6'),0,0)
gl.addWidget(QPushButton('7'),0,1)
gl.addWidget(QPushButton('8'),1,0)
gl.addWidget(QPushButton('9'),1,1)
#
wl.addLayout(hl)
wl.addLayout(vl)
wl.addLayout(gl)
if __name__=="__main__":
import sys
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
補足:
addLayout()メソッドのプロトタイプ:
addLayout(QLayout, row, col, row_cross, col_cross, Qt.Alignment)
addWidget()メソッドのプロトタイプ:
addWidget(QWidget, row, col, row_cross, col_cross, Qt.Alignment)