2017-07-21 7 views
0
私は一定の条件の下でそれをしたいと思い

を無効にする、のQLineEditウィジェットを編集することは不可能です。理想的には、それはのようなものになります。ドキュメントを見ては、編集にQLineEdit

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

if QLE_On.isChecked(): 
#disable editing of generic 

を、.isReadOnlyは私が探しているものを達成するためにどのように一つの可能​​な選択肢かもしれませんが、私はそれを実装する方法は非常にわかりません。

答えて

0

QLineEditが編集可能であることを確認するには、setReadOnly()機能を使用しないでください。

checkState()機能とstateChanged信号を使用して、チェックボックスの状態を同期的かつ非同期的に知ることができます。

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_()) 
あなたはGUIを通じてチェックを行う際にあなたのケースでは、あなたが初期値を設定するために、両方の、第一及び第二の必要、あなたのケースでは、次のコードは、ソリューションです。
+0

ありがとう!もう一つは、QLineEditをロックして編集できないうちに固定値に設定する方法はありますか? QLineEdit上でsetTextを呼び出す状態が変更されたときに関数に接続しようとしましたが、動作していないようです。 –

+0

編集:気にしないで! –

関連する問題