2016-09-16 6 views
1

Я только что начал простое приложение PyQt для Windows 7 и Python 2.7. Есть 2 кнопки и стол. Кнопка Apple должна быть на 5 раз выше, чем оранжевая кнопка, а таблица должна быть той же высоты, что и кнопка Apple.Кнопки PyQT имеют неправильный размер в QGridLayout

Однако обе кнопки имеют такую ​​же высоту, несмотря на то, что используют grid.addWidget(appleBtn, 0, 0, 5, 1), чтобы определить ее высоту.

Любые предложения?

enter image description here

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() 

ответ

1

Метод 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) 
Смежные вопросы