Bonjour a tous,
Je me suis lancé dans le python et pyQT pour développer une petite interface.
J'ai un problème que je n'arrive pas à résoudre après plein de test et de recherche.
J'ai un QPlainTextEdit ou je veux contrôler une console (afficher comme elle et donc afficher les retours)
Je me suis donc mis en OverwriteMode, la surprise lorsque je fais un insertPlainText('toto') le string se met au curseur mais sans tenir compte du mode OverwriteMode. Et comme je ne trouve que append et insert, je n'arrive pas à pallier au probléme.
J'ai un petit code de test qui me permet de faire mes tests lorsque j'appuie sur la touche "UP" ca ajoute le caractère 'a'.
Donc voila pour résumer, je recherche une fonction pour remplacer le "self.insertPlainText('a')" et qui ajouterai le a à la place du caractère sous le curseur et non avant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 class widget_Console(QPlainTextEdit): def __init__(self, echo = False): super(widget_Console, self).__init__() self.document().setMaximumBlockCount(5000) self._localEchoEnabled = echo p = self.palette() p.setColor(QPalette.Base, Qt.black) p.setColor(QPalette.Text, Qt.green) f = QFont() f.setFamily("Consolas") f.setPointSize(9) self.setFont(f) self.setOverwriteMode(True) def keyPressEvent(self, event): key = event.key() if key == Qt.Key_Up: self.insertPlainText('a') else: QPlainTextEdit.keyPressEvent(self, event) if __name__ == "__main__": import sys app = QApplication([]) cons = widget_Console(True) cons.show() sys.exit(app.exec_())
Merci a tous,
Bastien
Partager