繁体   English   中英

PyQT按钮在QGridLayout中的尺寸不正确

[英]PyQT Buttons has Incorrect Size in QGridLayout

我刚刚在Windows 7和Python 2.7上启动了一个简单的PyQt应用程序。 有2个按钮和一个桌子。 Apple按钮的高度应比Orange按钮高5倍,桌子的高度应与Apple按钮相同。

但是,尽管使用grid.addWidget(appleBtn, 0, 0, 5, 1)定义其高度grid.addWidget(appleBtn, 0, 0, 5, 1)但两个按钮的绘制高度相同。

有什么建议么?

在此处输入图片说明

from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys


def main():

    app     = QApplication(sys.argv)
    w       = QTabWidget()

    # Tab
    grid = QGridLayout()
    tab = QWidget() 
    tab.setLayout(grid)
    w.addTab(tab,"Hello World")


    # Button 1
    appleBtn = QPushButton("Apples")
    appleBtn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)   
    grid.addWidget(appleBtn, 0, 0, 5, 1)


    # Button 1
    orangeBtn = QPushButton("Oranges")
    appleBtn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding)   
    grid.addWidget(orangeBtn, 5, 0, 1, 1)


    # Table
    fruitTable = QTableWidget()
    fruitTable.setRowCount(5)
    fruitTable.setColumnCount(2)
    fruitTable.setHorizontalHeaderLabels(QString("Fruit;Color;").split(";"))
    fruitTable.horizontalHeader().setResizeMode(QHeaderView.Stretch)
    grid.addWidget(fruitTable, 6, 0, 1, 1)


    w.resize(400,300)
    w.setWindowTitle('Test')
    w.show()
    sys.exit(app.exec_())


main()

addWidget方法不能像您假定的那样起作用。 第二个和第三个参数指定行/列,而第三个和第四个参数指定要跨越多少行/列。

指定比例高度的正确方法是使用setRowStretch

grid.addWidget(appleBtn, 0, 0)
grid.setRowStretch(0, 5)
...
grid.addWidget(orangeBtn, 1, 0)
...
grid.addWidget(fruitTable, 2, 0)
grid.setRowStretch(2, 5)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM