gpt4 book ai didi

python - pyside 显示/隐藏布局

转载 作者:太空狗 更新时间:2023-10-29 20:56:45 36 4
gpt4 key购买 nike

我正在尝试根据是否选中复选框来显示两种布局之一。

仅使用小部件我可以执行以下工作正常:(本例中的每个小部件都是一个 QLineEdit)

myCheckbox.stateChanged.connect(switchControls)

def switchControls (self, state):
if state == 2:
self.widget1.show()
self.widget2.hide()
else:
self.widget1.hide()
self.widget2.show()

但是,由于我想为每个 QLineEdit 添加描述性标签,因此我需要在某种布局或容器中组合 QLineEdit+QLabel。我一直在尝试 addlayout/removeLayout/removeItem 在布局而不是小部件上执行上述操作,但无法让它工作。该程序在我最后一次尝试时崩溃了。

在两种布局之间切换的最简单方法是什么?它不必使用复选框,但我更喜欢那样。

最佳答案

将布局放入单独的小部件中。现在您“只使用小部件”。

这是一个例子:

from PySide.QtCore import *
from PySide.QtGui import *

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

self.layout=QVBoxLayout()
self.setLayout(self.layout)


self.checkbox=QCheckBox("Layouts")
self.layout.addWidget(self.checkbox)


self.widget1=QWidget()
self.layout.addWidget(self.widget1)

self.layout1=QVBoxLayout()
self.widget1.setLayout(self.layout1)

self.layout1.addWidget(QLabel("First layout"))

self.layout1.addWidget(QTextEdit())


self.widget2=QWidget()
self.layout.addWidget(self.widget2)

self.layout2=QHBoxLayout()
self.widget2.setLayout(self.layout2)

self.layout2.addWidget(QTextEdit("Second layout"))

self.layout2.addWidget(QTextEdit())


self.checkbox.toggled.connect(self.checkbox_toggled)
self.checkbox.toggle()

self.show()

def checkbox_toggled(self, state):
self.widget1.setVisible(state)
self.widget2.setVisible(not state)

app=QApplication([])
mw=MainWindow()
app.exec_()

运行它看看它是如何工作的。

关于python - pyside 显示/隐藏布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11826036/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com