2017-07-14 102 views
0

我在应用程序窗口中有2 QPushButtonbtn1需要是高度为btn2的5倍。在PyQT中增加QPushButton的高度

问题:尝试设置的self.btn1行跨度5使用layout.addWidget但高度保持不变。我错过了一个设置?

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

你需要改变按钮的大小政策:

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

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

Qt doc,默认为:

类似按钮的控件设置大小政策规定他们可能会水平延伸,但是垂直固定。

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)