2016-11-26 26 views
0

私はPyQT4にアプリケーションを構築しています。このアプリの主な部分は、ウィジェットのグリッドを維持することです(サブタイプはQLineEditウィジェットからクラス分けされています)。ウィジェットをQGridLayoutに編成しています。QGridLayoutのウィジェット間の間隔は、ウィンドウのサイズ変更時にどのように固定されますか?

私は窓を実行すると、私は私がしたいだけでどのように整理グリッドを得る、すなわち

Grid (initial size)

しかし、QGridLayoutは、ウィンドウのサイズが変更されたとき、それは自動的にウィジェット間の間隔をパッド性質を持っています、すなわち

Grid (expanded size)

私は関係なく、私は、ウィンドウのサイズを変更する方法、ウィジェット間の同じ間隔を持つグリッドの愛ないだろう。私は見て、これを達成する方法を見つけるように見えることができません。私は間隔を固定するものを想像していただろうが、そうした可能性のある機能のどれもがこの効果を持っていない。

ここにコードスニペットを示します。具体的にはQGridLayoutの部分だけです。

class GridBlockTxtbx(QtGui.QWidget): 

    def __init__(self, blocks=5, spaces=5): 
     QtGui.QWidget.__init__(self) 
     self.dctn_txtbx = {} 
     self.blocks = blocks 
     self.spaces = spaces 

     # Create layout 
     layout = QtGui.QGridLayout() 
     # Set initial spacing between widgets to 2 pixels... 
     # I want this to be fixed on window resize! 
     layout.setSpacing(2) 
     # Function to load the widgets into the grid 
     GridBlockTxtbx._gen_block_txtbx_grid(layout, self.blocks,  
              self.spaces, 
              self.dctn_txtbx) 
     # Set the layout 
     self.setLayout(layout) 

    def _gen_block_txtbx_grid(layout, rows, cols, dctn): 
     for i in range(rows): 
      for j in range(cols): 
       blk = GridBlockTxtbx._gen_block_txtbx(idx=(i, j)) 
       layout.addWidget(blk, i, j) 
       dctn[i, j] = blk 
+0

あなたが一定の間隔をしたい場合は、何がuponsではなく、サイズ変更が起こるでしょうか?ウィジェットが大きくなるか、またはグリッドがより多くの行と列を取得すべきか、グリッドの外側に余分なスペースがあるべきか?質問を回答可能にするには、希望の動作を指定してください。 – Trilarion

+0

エコモロが答えました、ありがとう:) –

+0

それは本当です。彼はあなたが望むものを特定しなかったので推測しましたが。それで他の人にとって質問が本当に役に立たなくなる – Trilarion

答えて

1

グリッドレイアウトの最後の行/列に拡張するスペーサーを追加します。

vspacer = QtGui.QSpacerItem(
     QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) 
    layout.addItem(vspacer, last_row, 0, 1, -1) 

    hspacer = QtGui.QSpacerItem(
     QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) 
    layout.addItem(hspacer, 0, last_column, -1, 1) 
+0

ありがとう、これは私が探していたものです:) –

関連する問題