Not*_*rly 8 python pyqt python-3.x pyqt5
我想在某些条件下,不可能编辑 QLineEdit 小部件。理想情况下,它看起来像:
QLE_On = QCheckBox("Non-editable?")
generic = QLineEdit()
if QLE_On.isChecked():
#disable editing of generic
Run Code Online (Sandbox Code Playgroud)
查看文档, .isReadOnly 可能是实现我正在寻找的目标的一种可能选择,但我不太确定如何实现它。
Vin*_*wal 11
只需lineEdit通过以下方式使其不可编辑False:
self.lineEdit.setEnabled(False)
Run Code Online (Sandbox Code Playgroud)
为了能够确定该功能QLineEdit是可编辑的,否则您不应使用该setReadOnly()功能。
checkState()您可以通过函数和信号同步和异步了解复选框的状态stateChanged。在您的情况下,您需要两者,第一个用于设置初始值,第二个当您通过 GUI 进行检查时,在您的情况下,以下代码是解决方案:
generic.setReadOnly(QLE_On.checkState()!=Qt.Unchecked)
QLE_On.stateChanged.connect(lambda state: generic.setReadOnly(state!=Qt.Unchecked))
Run Code Online (Sandbox Code Playgroud)
例子:
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_())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24887 次 |
| 最近记录: |