IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Activer et désactiver une cellule


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut Activer et désactiver une cellule
    Bonjour
    j'ai un tableau composé de deux cellule
    cel1 et cel2
    j'aimerais désactiver cel2 pour pour éviter à l'utilisateur d’écrire dedans avant de saisir un nombre valide dans cel 1
    donc , j'aimerais que l'utilisateur saisit dans cel1 un nombre si c'est valide on active cel2 et si ce n'est pas valider on affiche un message pour lui demander de donner un nombre correcte dans cel1
    j'ai essayé avec cellActivated(int,int) mais rien ne marche
    merci

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    peut on avoir un bout de code concerné?!
    Comment comprenez vous l'utilisation de cellActivated(int,int)?
    http://www.riverbankcomputing.co.uk/...#cellActivated

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    voici un tableau sur le quel j'aimerais desactiver ces cellules :
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # Python 2.7
     
    import sys
    from PyQt4 import QtCore, QtGui
     
    #############################################################################
    def prendcase(table, row, col):
        """Retourne la valeur de la case [row, col] de la table QTableWidget"""
        item = table.item(row, col)
        if item == None:
            # soit la case n'a jamais �t� initialis�e, soit elle a un widget
            if issubclass(type(table.cellWidget(row,col)), QtGui.QComboBox):
                # c'est un combobox: renvoyer la valeur affich�e
                item = table.cellWidget(row,col) 
                return unicode(item.currentText()) 
            # la case ne contient rien: renvoyer une chaine vide
            return u""
        else:
            return unicode(item.text())
     
    #############################################################################
    class Fenetre(QtGui.QWidget):
     
        # =======================================================================
        def __init__(self, parent=None):
            super(Fenetre, self).__init__(parent)
     
            # cr�er le lineEdit
            self.lineEdit = QtGui.QLineEdit(self)
     
            # cr�er le tableau
            self.tableWidget = QtGui.QTableWidget(self)
            self.tableWidget.setGeometry(QtCore.QRect(0, 30, 361, 301))
            self.nbrow, self.nbcol = 5, 3
            self.tableWidget.setRowCount(self.nbrow)
            self.tableWidget.setColumnCount(self.nbcol)
     
            # on met un combobox en [row=1, col=1]
            self.listecombo = ['toto', 'titi', 'tata', 'tutu']
            self.combo = QtGui.QComboBox()
            self.combo.addItems(self.listecombo)
            self.rowcombo, self.colcombo = 1, 1
            self.tableWidget.setCellWidget(self.rowcombo, self.colcombo, self.combo)
     
                # lancera la m�thode saisieval � chaque changement de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('currentCellChanged(int,int,int,int)'), self.saisieval)
     
                # lancera la m�thode saisievalder � chaque changement de contenu de case
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemChanged(QTableWidgetItem *)'), self.saisievalder)
                #
            QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL('itemClicked(QTableWidgetItem *)'),self._itemClicked)
     
                # mettre le focus sur la case [0,0] du tableau
            self.tableWidget.setFocus()
            self.tableWidget.setCurrentCell(0, 0)
     
        # =======================================================================
        def saisieval(self, row, col, row0, col0):
            """M�thode lanc�e � chaque changement de case du tableau
               row, col = coordonn�es de la nouvelle case
               row0, col0 = coordonn�es de l'ancienne case
            """
            val = prendcase(self.tableWidget, row0, col0)
            print "valeur saisie",val
            print "row=%d, column=%d " % (
                                                       row0,col0)
            self.lineEdit.setText(val)
     
        # =======================================================================
        def saisievalder(self, item):
            """m�thode lanc�e � chaque changement de contenu en fin d'�dition"""
            row = self.tableWidget.currentRow()
            col = self.tableWidget.currentColumn()
            if row==self.tableWidget.rowCount()-1 and col==self.tableWidget.columnCount()-1:
                val = prendcase(self.tableWidget, row, col)
     
                self.lineEdit.setText(val)
     
        def _itemClicked(self, item):
            print "text=%s, row=%d, column=%d" % (
                item.text(), item.row()+1, item.column()+1) 
    #############################################################################
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        fen = Fenetre()
        fen.show()
        sys.exit(app.exec_())
    je veux que l'utilisateur puisse saisir que dans la première cellule donc y a deux possibilités :
    il donne un chiffre on active la deuxième cellule
    s'il donne pas un chiffre on active rien tant qu'il n'a pas donner un nombre dans la première cellule .
    tu as une idée ?

Discussions similaires

  1. activer/désactiver une cellule à partir d'une case à cocher
    Par gc007 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2012, 18h33
  2. désactiver une cellule xamGrid infragistics
    Par sanaaafkir dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 09/07/2009, 14h32
  3. Activer ou désactiver une connexion réseau et wifi
    Par koKoTis dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 10/10/2007, 23h49
  4. [VB.Net] activation et désactivation de cellule (grisement)
    Par lou87 dans le forum Windows Forms
    Réponses: 16
    Dernier message: 24/02/2006, 08h43
  5. Réponses: 4
    Dernier message: 29/10/2005, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo