この奇妙な問題に苦労しています。プロジェクトにいくつかの QLineEdit ウィジェットを配置し、クリックするだけですべてのテキストを選択 (強調表示) しようとしました。これはすでに機能していましたが、この機能を同じ QLineEdit 親の他のクラスに拡張したいと考えました。私はこの小さなインターフェースを作りました:
class EditInterface(QtGui.QLineEdit):
def __init__(self, parent):
super(EditInterface, self).__init__(parent)
self.focus = False
self.setFocusPolicy(QtCore.Qt.StrongFocus)
def mousePressEvent(self, event):
ret = QtGui.QLineEdit.mousePressEvent(self, event)
if not self.focus:
self.selectAll()
self.focus=True
else:
self.deselect()
return ret
def focusInEvent(self,event):
self.focus=True
return QtGui.QLineEdit.focusInEvent(self,event)
def focusOutEvent(self,event):
self.focus=False
return QtGui.QLineEdit.focusOutEvent(self,event)
現在、まったく機能していません。私は単にこれを行う場合:
def mousePressEvent(self, event):
ret = QtGui.QLineEdit.mousePressEvent(self, event)
self.selectAll()
return ret
その後、正常に動作していますが、すべてを何度も選択するだけでなく、他のマウス操作を有効にしたいと考えています。問題は self.focus 変数にあるようですが、私は Python の経験がなく、何が起こっているのかわかりません。私のプロジェクトでは他のすべてがうまく機能しているので、ここに投稿することはスキップします。前もって感謝します
編集:私は問題を見つけました。 それは継承ではなく、イベントに関するものでした。focusInEvent は mousePressEvent の前に呼び出されるため、selectAll() を呼び出すことは不可能でした。