PyQt: problemi con l'asterisco durante la modifica in QPlainTextEdit
Domanda
Sto riscontrando un problema con un QPlainTextEdit. Voglio che il "contenuto sia stato modificato" asterisco per apparire nella barra del titolo ogni volta che il contenuto è stato modificato.
Nell'esempio seguente, digitare alcune lettere. L'asterisco appare come dovrebbe. Premi Ctrl + S, l'asterisco scompare come dovrebbe. Ma se digiti qualche altra lettera ... perché l'asterisco non appare di nuovo?
import os, sys
from PyQt4 import QtGui, QtCore
class MyTextEdit(QtGui.QPlainTextEdit):
def __init__(self):
QtGui.QPlainTextEdit.__init__(self)
save_seq = QtGui.QKeySequence.Save
self.save_shortcut = QtGui.QShortcut(save_seq, self, self.save)
QtCore.QObject.connect(self,
QtCore.SIGNAL("modificationChanged(bool)"),
self.on_change)
def on_change(self, is_modified):
print "on_change"
window.setWindowModified(is_modified)
def save(self):
window.setWindowModified(False)
#
app = QtGui.QApplication(sys.argv)
window = QtGui.QMainWindow()
edit = MyTextEdit()
window.setCentralWidget(edit)
window.setWindowTitle("None [*]")
window.show()
app.exec_()
Soluzione
Non importa, capito. Il problema era che nel metodo di salvataggio avrei dovuto chiamare self.document (). SetModified (False) invece di window.setWindowModified (False)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow