【问题标题】:pyside show / hide layoutspyside 显示/隐藏布局
【发布时间】:2012-08-03 06:59:51
【问题描述】:

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

只有使用小部件,我才能执行以下操作: (本例中的每个小部件都是一个 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 在布局而不是小部件上执行上述操作,但无法使其正常工作。程序在我最后一次尝试时崩溃了。

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

【问题讨论】:

    标签: python layout hide show pyside


    【解决方案1】:

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

    这是一个例子:

    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_()
    

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

    【讨论】:

    • 我应该写“仅使用小部件”。我可以在里面放置什么样的小部件?我认为小部件会进入布局,而不是相反。
    • 您可以将布局放入大多数小部件中。大多数情况下使用QWidgetQFrame。我举个例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多