2016-07-12 2 views
1

У меня есть этот код:Как объединить столбцы в макет (Colspan функция)

#!/usr/bin/env python3 

from PyQt5.QtWidgets import * 
import sys  

class Window(QWidget): 
    def __init__(self): 
     QWidget.__init__(self) 

     layout = QGridLayout() 
     self.setLayout(layout) 

     label_1 = QLabel("label 1") 
     layout.addWidget(label_1, 0, 0) 

     label_2 = QLabel("label 2") 
     layout.addWidget(label_2, 0, 1) 

     label_3 = QLabel("label 3") 
     layout.addWidget(label_3, 1, 0) 


app = QApplication(sys.argv) 

screen = Window() 
screen.show() 

sys.exit(app.exec_()) 

У меня есть этот результат:

image example of current code

, но мне нужно это:

image example of code which I need

Как я могу это сделать?

ответ

1

Четвертый и пятый аргументы addWidget позволяют указать, сколько строк и столбцов, чтобы охватить:

label_3 = QLabel("label 3") 
layout.addWidget(label_3, 1, 0, 1, 2) 
+0

Большое спасибо, все работает как ожидается – ValueError

+0

Не могли бы вы рассказать мне, как я могу изменить этот параметр после добавления виджета? Я хочу добавить его как в первый пост, а затем изменить colspan – ValueError

+0

@ValueError. Пожалуйста, задайте новый вопрос, объясняя, что вы пытаетесь достичь, делая это, так как могут быть лучшие доступные решения. – ekhumoro

1

Это пример кода для размещения QLabel. Это PyQt4, но вы можете попробовать с PyQt5 с небольшими изменениями.

import sys 
from PyQt4 import QtGui 

class Window (QtGui.QWidget): 
    def __init__(self, parent=None):   

     super(Window, self).__init__(parent) 

     self.verticalLayout  = QtGui.QVBoxLayout (self) 
     self.verticalLayout.setObjectName ('verticalLayout') 

     self.gridLayout   = QtGui.QGridLayout() 
     self.gridLayout.setObjectName ('gridLayout') 

     self.label_1 = QtGui.QLabel(self) 
     self.label_1.setObjectName('label_1') 
     self.label_1.setText ('Label_1')   
     self.label_1.setStyleSheet('background-color: rgb(182, 182, 182);') 

     self.label_2 = QtGui.QLabel(self) 
     self.label_2.setObjectName('label_2') 
     self.label_2.setText ('Label_2')   
     self.label_2.setStyleSheet('background-color: rgb(182, 182, 182);') 

     self.label_3 = QtGui.QLabel(self) 
     self.label_3.setObjectName('label_3') 
     self.label_3.setText ('Label_3') 
     self.label_3.setStyleSheet('background-color: rgb(182, 182, 182);') 


     self.gridLayout.addWidget(self.label_1, 0, 0, 1, 1) 
     self.gridLayout.addWidget(self.label_2, 0, 1, 1, 1) 
     self.gridLayout.addWidget(self.label_3, 1, 0, 1, 2) 

     self.verticalLayout.addLayout(self.gridLayout) 
     self.resize(300, 100) 

if __name__ == '__main__': 
    app = QtGui.QApplication(sys.argv) 
    w = Window() 
    w.show() 
    sys.exit(app.exec_()) 
+0

Большое спасибо mate – ValueError

Смежные вопросы