繁体   English   中英

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

[英]Change widget visibility using QCheckBox or QComboBox in PyQt

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

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

您需要将stateChanged信号(对于QCheckBox ;每次选中/取消选中该框时发出)或currentIndexChanged信号(对于QComboBox ;每次在组合框中选择不同项目时发出)到插槽(您也可以使用lambda在这里)。 在该插槽中,您需要做的就是调用QLineEditshow()hide()方法来切换行编辑的可见性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM