2016-05-17 6 views
1

私はGUI用のPyQt4ライブラリを使ってPythonでアプリケーションを構築しました。私のGUIは、グラフとその上のいくつかのボタンをプロットします。 frame_Bのグラフの生活、frame_Aでのライブグラフの上のボタン(およびLED):PyQtでのQWidgetsのスケーリング

enter image description here

私は私のMainWindowクラスにframe_A(ともframe_B)を作成します。

class CustomMainWindow(QtGui.QMainWindow): 

    def __init__(self): 
     super(CustomMainWindow, self).__init__() 
     # Do some initialization stuff.. 
    '''''' 

    def initLayout(self): 
     # Create frame_A and its corresponding layout 
     frame_A = QtGui.QFrame(self) 
     setCustomSize(frame_A, 380,800) 
     self.layout_A = QtGui.QGridLayout() 
     frame_A.setLayout(self.layout_A) 

     # Create frame_B, and so forth.. 

    '''''' 

    def setButtons(self): 
     # Create btn01.. 
     # Create btn02.. 
     # Create btn03.. 
     # Create btn04.. 
     # Create btn05.. 
     # Create led01.. 
     # Add all buttons to the layout of frame_A: 
     self.layout_A.addWidget(self.btn01, *(0,0)) 
     self.layout_A.addWidget(self.btn02, *(0,1)) 
     self.layout_A.addWidget(self.btn03, *(0,2)) 
     self.layout_A.addWidget(self.btn04, *(0,3)) 
     self.layout_A.addWidget(self.btn05, *(0,4)) 
     self.layout_A.addWidget(self.led01, *(0,5)) 

    '''''' 

'''''' 

上記の図のように、結果は非常に満足です。ウィンドウを大きくすると(マウスで簡単なクリックとドラッグで)、frame_Aframe_Bも拡大します。それは完璧です。私は他の方法でそれを望んでいないでしょう。

しかし、frame_Aのボタンがすべての新しいスペースを埋めるように均等に配分されていることが気になります。私はこのような行動を好むだろう: enter image description here

誰もがそれを達成するために巧妙なアイデアを持っていますか?

答えて

1

ウィジェットを水平方向に追加する場合は、QGridLayoutの代わりにQHBoxLayoutを使用することをおすすめします。それでlayout_A.setAlignment(QtCore.Qt.AlignLeft)を使うことができます。それがGridlayoutでも動作するかどうかは不明です。

+0

チャームのように動作します!ありがとうございます:-) –

2

最後のボタンの後にself.layout_A.addStretch()を追加

+0

それは動作しません。 'AttributeError: 'QGridLayout'オブジェクトには属性がありません 'addStretch()'' –

関連する問題