【问题标题】:How to combine columns in a layout (colspan feature)如何在布局中组合列(colspan 功能)
【发布时间】:2016-11-14 11:41:33
【问题描述】:

我有这个代码:

#!/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_())

我有这个结果:

但我需要这个:

我该怎么做?

【问题讨论】:

    标签: python qt layout pyqt pyqt5


    【解决方案1】:

    addWidget 的第四个和第五个参数允许您指定要跨越的行数和列数:

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

    【讨论】:

    • 您能告诉我在添加小部件后如何更改此设置吗?我想在第一篇文章中添加它,然后更改 colspan
    • @ValueError。请提出一个新问题,说明您这样做的目的是什么,因为可能有更好的解决方案可用。
    【解决方案2】:

    这是布局 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_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 2019-03-20
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      相关资源
      最近更新 更多