Bonjour,
Je souhaite saisir seulement les chiffres dans un tableau avec qdoublevalidator sachant qu'on peut copier et coller les données dans Excel.
Voici le code que je n'arrive pas.
Merci d'avance pour votre aide
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * class MyTableWidget(QWidgets): def __init__(self): super().__init__() self.table = QTableWidget(self) self.table.setRowCount(4) self.table.setColumnCount(4) vbox = QVBoxLayout() vbox.addWidget(self.table) vbox.addStretch(1) self.setGeometry(100, 100, 500, 500) #saisir les chiffres seulement self.edit = QLineEdit() validator = QDoubleValidator() self.edit.setValidator(validator) # pour copier et coller les données self.table.setFocus() self.table.setCurrentCell(0, 0) def copier(self): selected = self.table.selectedRanges() texte = "" for i in range(selected[0].topRow(), selected[0].bottomRow() + 1): for j in range(selected[0].leftColumn(), selected[0].rightColumn() + 1): texte += self.table.item(i, j).text() + "\t" texte = texte[:-1] + "\n" # le [:-1] élimine le '\t' en trop QApplication.clipboard().setText(texte) def coller(self): selected = self.table.selectedRanges() row0 = selected[0].topRow() col0 = selected[0].leftColumn() texte = QApplication.clipboard().text() for i, texteligne in enumerate(texte.split('\n')): for j, textecase in enumerate(texteligne.split('\t')): self.table.setItem(row0 + i, col0 + j, QTableWidgetItem(textecase)) def keyPressEvent(self, event): if self.table.hasFocus(): if event.key() == Qt.Key_C and (event.modifiers() & Qt.ControlModifier): self.copier() event.accept() if event.key() == Qt.Key_V and (event.modifiers() & Qt.ControlModifier): self.coller() event.accept() else: event.ignore() else: event.ignore() if __name__ == '__main__': app = QApplication(sys.argv) w = MyTableWidget() w.show() sys.exit(app.exec_())
Partager