2016-11-14 1 views
1

私はQGridLayoutを作成し、それにいくつかのウィジェットを追加すると、ウィジェットの一部はそれを含むレイアウトのセクションを埋めるために伸びません。レイアウトで最大のスペースを埋めるためにウィジェットが伸びないのはなぜですか?

class Grid(QGridLayout): 
    def __init__(self, grid_widget): 
     arrow = QPixmap("icons/arrow.png") #initial image is facing up 
     self.arrows = [] 
     locs = [(0,1), 
       (0,2), 
       (1,2), 
       (2,2), 
       (2,1), 
       (2,0), 
       (1,0), 
       (0,0)] 

     for rot in range(len(locs)): 
      transform = QTransform().rotate(45*rot) 
      icon = arrow.transformed(transform, Qt.SmoothTransformation) 
      self.arrows.append(ExpandButton(icon, rot, grid_widget)) #ExpandButton inherits from QPushButton 

     for i, loc in enumerate(locs): 
      self.addWidget(self.arrows[i], loc[0], loc[1]) 

     self.addWidget(grid_widget, 1, 1) 

Result

あなたが見ることができるように、両側のQPushButtonsは、上部にQPushButtonsようなレイアウトを埋めるためにストレッチしないように。これを修正する方法はありますか?横のQPushButtonsがレイアウトを埋めるために縦に伸びるようにします。

+2

'button.setSizePolicy(QSizePolicy.Expanding、QSizePolicy.Expanding)'? – furas

+0

@furasその解決策は、ありがとうございます!私はそれを受け入れることができるので、下に投稿することができますか?私は自分のクラスとしてボタンを持っていなかったので、これをやろうとしていましたが、うまくいかなかったので、もう一度やり直すことはありませんでした。 –

+0

@furasまた、ウィジェットが自動的に最大スペースを埋めるのを知っていますか? –

答えて

2

私が知っているように、ボタンは(デフォルトでは)水平方向にのみ拡張されています。誰もが低いボタンを期待しています。

縦横の拡大を設定する必要があります。

button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) 
+0

これは[このケースでは動作しません](http://stackoverflow.com/questions/40136655)/pyqt - 手作業によるサイズ変更 - メニュー - widget-does-not-resize-its-content)。どんな考え? – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest Qtには、[Qt Designer](http://doc.qt.io/qt-5/qtdesigner-manual.html)や[Qt Creator](http://doc.qt.io/)のようなビジュアルGUIビルダーがあります。 PythonではなくC++コード用に作成されていますが、依然としてさまざまなプロパティ(サイズポリシー、展開など)をテストしてからこの情報をPythonコードで使用することができます。 – furas

関連する問題