2017-07-14 6 views
0

私はアプリウィンドウに2 QPushButtonを持っています:btn1は、高さの5倍である必要があります。btn2PyQTのQPushButtonの高さを増やす

問題:layout.addWidgetを使用して5self.btn1の行スパンを設定しようとしましたが、高さは変わりません。私は設定で逃したのですか?

import sys 
from PyQt4 import QtGui, QtCore 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.initUI() 

    def initUI(self): 
     layout = QtGui.QGridLayout() 

     self.btn1 = QtGui.QPushButton('Hello') 
     self.btn2 = QtGui.QPushButton('World') 

     layout.addWidget(self.btn1, 1, 1, 5, 1) 
     layout.addWidget(self.btn2, 6, 1, 1, 1) 

     centralWidget = QtGui.QWidget() 
     centralWidget.setLayout(layout) 
     self.setCentralWidget(centralWidget) 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    mainWindow = MainWindow() 
    mainWindow.show() 
    sys.exit(app.exec_()) 


if __name__ == '__main__': 
    main() 

enter image description here

+1

コードを見ると、最初の5行は非常に小さい高さでなければならないようです。 'setRowMinimumHeight(self、int row、int minSize)'を使って、各行の最小の高さを設定することができます。 – Exa

+1

ボタンの高さを5倍にしますか? self.btn1.setMinimumHeight(5 * self.btn2.height())のように? – atomSmasher

答えて

1
あなたは、ボタンを変更する必要があります

サイズポリシー:Qt docから

self.btn1.setSizePolicy(
    QtGui.QSizePolicy.Preferred, 
    QtGui.QSizePolicy.Expanding) 

self.btn2.setSizePolicy(
    QtGui.QSizePolicy.Preferred, 
    QtGui.QSizePolicy.Preferred) 

、デフォルトで:

ボタンのようなウィジェットのサイズを設定 が水平に伸びるが、垂直に固定されることを指定するポリシー。

即ちQPushButtonのデフォルトサイズポリシーは、水平Minimum、上下Fixedあります。

また、この例で目的を達成するための簡単な方法は、QVBoxLayoutを使用し、addWidget()を呼び出すときに伸縮係数を設定することです。すなわち

def initUI(self): 
    layout = QtGui.QVBoxLayout() 

    self.btn1 = QtGui.QPushButton('Hello') 
    self.btn2 = QtGui.QPushButton('World') 

    self.btn1.setSizePolicy(
     QtGui.QSizePolicy.Preferred, 
     QtGui.QSizePolicy.Expanding) 

    self.btn2.setSizePolicy(
     QtGui.QSizePolicy.Preferred, 
     QtGui.QSizePolicy.Preferred) 

    layout.addWidget(self.btn1, 5) 
    layout.addWidget(self.btn2, 1) 

    centralWidget = QtGui.QWidget() 
    centralWidget.setLayout(layout) 
    self.setCentralWidget(centralWidget) 
関連する問題