禁用编辑QLineEdit

时间:2017-07-21 23:16:58

标签: python python-3.x pyqt pyqt5

我想在某些条件下这样做,不可能编辑QLineEdit小部件。理想情况下,它看起来像:

{{1}}

查看文档,.isReadOnly可能是如何实现我所寻求的一种可能选择,但我不太确定如何实现它。

2 个答案:

答案 0 :(得分:0)

能够确定QLineEdit是否可编辑,或者您不应使用setReadOnly()功能。

您可以通过checkState()函数和stateChanged信号同步和异步地了解复选框的状态。在您的情况下,您需要两者,第一个设置初始值,第二个是通过GUI检查,在您的情况下,以下代码是解决方案:

generic.setReadOnly(QLE_On.checkState()!=Qt.Unchecked)
QLE_On.stateChanged.connect(lambda state: generic.setReadOnly(state!=Qt.Unchecked))

示例:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


app = QApplication(sys.argv)
w=QWidget()
w.setLayout(QVBoxLayout())

QLE_On = QCheckBox("Non-editable?")
generic = QLineEdit()

generic.setReadOnly(QLE_On.checkState()!=Qt.Unchecked)
QLE_On.stateChanged.connect(lambda state: generic.setReadOnly(state!=Qt.Unchecked))

w.layout().addWidget(QLE_On)
w.layout().addWidget(generic)
w.show()
sys.exit(app.exec_())

答案 1 :(得分:0)

只需将lineEdit设置为False,即可使其不可编辑:

self.lineEdit.setEnabled(False)