saisir les chiffres seulement dans un tableau qtablewidget
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:
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_()) |