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

Python Discussion :

Problème de gestion de class


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Par défaut Problème de gestion de class
    Bonjour,

    Après plusieurs mois de sommeil dans la programmation de Python, je ne parviens plus à faire des choses de base.

    Je souhaiterais créer un PanedWindow grâce à une class mais en 'lançant' cette class Pane() à partir d'une autre class Application().

    Mais, lorsque j'exécute le script, j'ai le message d'erreur suivant : " File "C:\Python32\Perso\Exemples de Programmes\PanedWindow.py", line 33, in __init__
    self.f = Pane(self.Ecran)
    TypeError: object.__new__() takes no parameters "


    Sauriez-vous comment créer une instance de Pane() à partir de Application() ?


    Voici le code :

    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
    # Ce widget permet de séparer une fenêtre (ou frame, ou un toplevel) en deux zones ajustables. 
     
    from tkinter import *
     
     
    class Pane(object):
     
        def __init_(self, boss):
            self.fen = boss
     
            # création 
            self.pane1 = PanedWindow(self.fen, showhandle=1, sashrelief=SUNKEN, orient=HORIZONTAL) ;# ou VERTICAL
            self.pane1.pack(expand='yes',fill="both")
     
            self.pane2 = PanedWindow(pane1, showhandle=1, sashrelief=SUNKEN, orient=VERTICAL)
            self.pane1.add(pane2)
            ##pane2.pack(expand='yes',fill="both")
     
            self.left = Label(pane1,text="Côté gauche",bg="yellow")
            self.right = Label(pane1,text="Côté droite",bg="white")
            self.other = Label(pane2,text="Côté autre",bg="red")
     
            self.pane1.add(left)
            self.pane1.add(right)
            self.pane2.add(other)
     
     
    class Application(object):
     
        def __init__(self):
            self.Ecran = Tk()
            self.Ecran.geometry("300x150")
            self.f = Pane(self.Ecran)
            self.Ecran.mainloop()
     
     
    app = Application()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Et si vous écrivez le constructeur __init__ correctement?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Par défaut
    Effectivement, c'était "juste" un problème de '__init__()'

    Mais, quand on ne maîtrise rien du tout, la moindre anicroche devient une montagne...

    Merci pour votre intervention brève mais efficace wiztricks !

    En revanche, je ne sais pas si c'est mon navigateur mais votre réponse n'apparaît pas quand on va sur la discussion (même si le nombre de réponse fait bien apparaître '1' dans la liste des discussions) : pour trouver votre réponse, il m'a fallu aller dans votre profil à l'onglet "Trouver tous les messages de wiztricks ".

    Encore merci pour votre réponse et voici le code qui fonctionne maintenant :


    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
    from tkinter import *
     
     
    class Detection_touche(object):
     
        def __init__(self, boss):
            self.fen = boss
            self.flag = 'abc'
            self.fen.bind("<KeyPress>", self.Appui)
            self.fen.bind("<KeyRelease>", self.Relache)
     
     
        #L'appui prolongé sur une touche du clavier appelle plusieurs fois l'évenement
        #La variable "flag" permet d'intercepter le 1er évenement
        def Appui(self, event):
     
            flagTest = event.keysym
     
            if self.flag != flagTest:
                self.flag = flagTest
                print ("appui    : touche=",event.keysym)
     
            return 'break'
     
     
        def Relache(self, event):
     
            print ("relache  : touche=",event.keysym)
            print('')
     
            self.flag = 'abc'
     
     
    # Division de la fenetre en 3 "volets" redimensionnables
    class Pane(object):
     
        def __init__(self, boss):
            self.fen = boss
     
            # création 
            self.pane1 = PanedWindow(self.fen, showhandle=1, sashrelief=SUNKEN, orient=HORIZONTAL) ;# ou VERTICAL
            self.pane1.pack(expand='yes',fill="both")
     
            self.pane2 = PanedWindow(self.pane1, showhandle=1, sashrelief=SUNKEN, orient=VERTICAL)
            self.pane1.add(self.pane2)
            ##pane2.pack(expand='yes',fill="both")
     
    ##        self.pane3 = PanedWindow(pane1, showhandle=1, sashrelief=SUNKEN, orient=VERTICAL)
    ##        self.pane1.add(pane3)
     
            self.left = Label(self.pane1,text="Côté gauche",bg="yellow")
            self.right = Label(self.pane1,text="Côté droite",bg="white")
            self.other = Label(self.pane2,text="Côté autre",bg="red")
     
            self.pane1.add(self.left)
            self.pane1.add(self.right)
            self.pane2.add(self.other)
     
     
    class Application(object):
     
        def __init__(self):
            self.Ecran = Tk()
            self.Ecran.geometry("300x150")
            f = Pane(self.Ecran)
    ##        g = Detection_touche(f.pane1)
            self.Ecran.mainloop()
     
     
    app = Application()

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2011
    Messages : 58
    Par défaut
    Oups ! en validant mon dernier message, le vôtre vient d'apparaître...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/04/2007, 15h03
  2. [Upload] Problème pour gestion d'erreur avec class
    Par allserv dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2005, 13h00
  3. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17
  4. Problème de gestion fichiers
    Par glutock dans le forum ASP
    Réponses: 2
    Dernier message: 08/04/2004, 11h55
  5. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 15h35

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