您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Python怎么修改單列QVBoxLayout為多列”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python怎么修改單列QVBoxLayout為多列”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
替換 QWidget 的布局并不那么簡單,將另一個對象分配給存儲其他布局引用的變量。
self.layout = Foo()
widget.setLayout(self.layout)
self.layout = Bar()
對象與變量不同,對象本身是執行操作的實體,但變量只是存儲對象引用的地方。例如,對象可能是人,并變量我們的名字,所以如果他們改變我們的名字,并不意味著他們改變我們作為一個人。
解決方案是使用sip.刪除刪除Q布局,然后設置新的布局:
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import (
QApplication,
QHBoxLayout,
QMainWindow,
QPushButton,
QVBoxLayout,
QWidget,
)
import sip
class TestCase(QMainWindow):
def __init__(self):
super().__init__()
test = QWidget()
self.setCentralWidget(test)
layout = QVBoxLayout(test)
for i in range(10):
temp_btn = QPushButton(str(i))
temp_btn.pressed.connect(self.multi_col)
layout.addWidget(temp_btn)
@pyqtSlot()
def multi_col(self):
cols = [QVBoxLayout(), QVBoxLayout()]
old_layout = self.centralWidget().layout()
while old_layout.count():
child = old_layout.takeAt(0)
widget = child.widget()
if widget is not None:
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])
def main():
app = QApplication(sys.argv)
window = TestCase()
window.show()
app.exec_()
if __name__ == "__main__":
main()
讀到這里,這篇“Python怎么修改單列QVBoxLayout為多列”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。