Search code examples
pythonpyqtpyqt5qlayout

QHBoxLayout add widget in a different order


writing QHBoxLayout.addWidget() adds the widget to the right. Is there a way for me to add it in in a different position, for example, insert it between the last rightmost and second-rightmost widget?


Solution

  • You can insert a widget in any position using the insertWidget() method:

    Example:

    import sys
    
    from PyQt5 import QtWidgets
    
    
    if __name__ == "__main__":
        app = QtWidgets.QApplication(sys.argv)
        w = QtWidgets.QWidget()
        hlay = QtWidgets.QHBoxLayout(w)
        for i in range(8):
            label = QtWidgets.QLabel("label-{}".format(i))
            hlay.addWidget(label)
        # insert widget between label-6 and label-7
        hlay.insertWidget(hlay.count() - 1, QtWidgets.QPushButton("Press me"))
        w.show()
        sys.exit(app.exec_())
    

    enter image description here