使用PyQt中的QCheckBox或QComboBox更改小部件可见性

时间:2018-03-03 17:51:47

标签: python pyqt

我正在尝试使用QLineEditQCheckBox显示/隐藏QComboBox(或其他一些小部件)。

2 个答案:

答案 0 :(得分:0)

您需要连接stateChanged信号(对于QCheckBox;每次检查/取消选中此框时都会发出)或currentIndexChanged信号(对于QComboBox;每次都会发出你在组合框中选择一个不同的项目)到一个插槽(你也可以在这里使用lambda)。在该广告位中,您只需调用QLineEdit的{​​{1}}或show()方法即可切换行修改的可见性。

答案 1 :(得分:0)

from PyQt5 import Qt

class GUI(Qt.QWidget):     

    def __init__(self):
        super().__init__()

        layout = Qt.QVBoxLayout(self)        
        self.lineEdit = Qt.QLineEdit()
        self.lineEdit.setPlaceholderText("Hello Hossam Almasto")
        layout.addWidget(self.lineEdit)

        self.combo = Qt.QComboBox(self) #, activated = self.onChangeDir)
        self.combo.addItem("Test 1")
        self.combo.addItem("Test 2")
        layout.addWidget(self.combo)

        self.combo.activated[str].connect(self.onActivated)

    def onActivated(self, text):
        self.comboText = text        
        if self.comboText == "Test 2":
            self.lineEdit.hide()
        else:
            self.lineEdit.show()
            self.combo.setFocus()


if __name__ == '__main__':
    app = Qt.QApplication([])
    mw  = GUI()
    mw.show()
    app.exec()  
相关问题