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_())