本文小编为大家详细介绍“Python怎么修改单列QVBoxLayout为多列”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么修改单列QVBoxLayout为多列”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

替换 QWidget 的布局并不那么简单,将另一个对象分配给存储其他布局引用的变量。

self.layout=Foo()widget.setLayout(self.layout)self.layout=Bar()

对象与变量不同,对象本身是执行操作的实体,但变量只是存储对象引用的地方。例如,对象可能是人,并变量我们的名字,所以如果他们改变我们的名字,并不意味着他们改变我们作为一个人。

解决方案是使用sip.删除删除Q布局,然后设置新的布局:

importsysfromPyQt5.QtCoreimportpyqtSlotfromPyQt5.QtWidgetsimport(QApplication,QHBoxLayout,QMainWindow,QPushButton,QVBoxLayout,QWidget,)importsipclassTestCase(QMainWindow):def__init__(self):super().__init__()test=QWidget()self.setCentralWidget(test)layout=QVBoxLayout(test)foriinrange(10):temp_btn=QPushButton(str(i))temp_btn.pressed.connect(self.multi_col)layout.addWidget(temp_btn)@pyqtSlot()defmulti_col(self):cols=[QVBoxLayout(),QVBoxLayout()]old_layout=self.centralWidget().layout()whileold_layout.count():child=old_layout.takeAt(0)widget=child.widget()ifwidgetisnotNone:old_layout.removeItem(child)cols[0].addWidget(widget)cols[1],cols[0]=cols[0],cols[1]sip.delete(old_layout)lay=QHBoxLayout(self.centralWidget())lay.addLayout(cols[0])lay.addLayout(cols[1])defmain():app=QApplication(sys.argv)window=TestCase()window.show()app.exec_()if__name__=="__main__":main()

读到这里,这篇“Python怎么修改单列QVBoxLayout为多列”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。