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

Tkinter Python Discussion :

[Tkinter] Plusieurs fenêtre avec Tkinter


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 13
    Points : 6
    Points
    6
    Par défaut [Tkinter] Plusieurs fenêtre avec Tkinter
    Bonjours,

    Tout d'abord, désolé de reposter ce message, mais j'ai vraiment besoin d'une aide rapide...


    Mon problème peut paraître simple au premier abord, mais je n'ai pas trouvé comment faire, même après avoir disséqué Tkinter.py.

    Je désire faire apparaitre une transformée Fourier ( pour ceux qui connaisse ) ou bien un Canvas ( pour les autre ) sur une fenêtre indépendante, lorsque j'appuie sur un boutton.
    Déclaration de la fenêtre principale (au cas ou cela ai une importance)
    Code:


    Puis dans une classe héritée de la classe Frame, packé sur la fenêtre root

    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
    class initButtonsAnalyse(Frame):
       '''Création des bouttons qui jouent et enregistrent'''
       def __init__(self, snd, main):
          Frame.__init__(self)
          self.main = main
          self.sound = snd
               self.pack()
                    # [...]
                    Tkinter.Button(self, text='''Fourier géant''', command = self.gigantF).pack(side = 'left')
     
       def gigantF(self):
     
          #Configuration de la fenêtre du fourier
          self.fourier = Tk()
     
          #appel du fourier géant
          self.fourierGeant = gigantFourier( self.sound, self.main )
     
          #pack le fourier géant
          self.fourierGeant.grid(row= 0, column = 0)


    Voici le gigantFourier en question, lui aussi hérité de la classe Frame ...

    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
    class gigantFourier (Frame):
       '''Création du grand graphe Fourier indépendant'''
       def __init__(self, snd, parent=None, sound=None, *args, **kw):
     
          #Configuration de l'héritage
          Frame.__init__(self)
     
          #Initialisation des variables
          self.snd = snd
     
          #Création du Canvas avec Fourier
          self.canvas = SnackCanvas(height=600, width=800)
          self.canvas.create_section(0, 0, sound=self.snd, start=6000, end=6100, height=600, width=800)
     
          #Curseurs
          self.message = 'Cliquez sur le graphe'
     
          #initialisation du scruteur d'évenement
          self.canvas.bind('<Button 1 >', self.pointeur )
     
          #Initialisation des lignes et du texte
          self.line2 = self.canvas.create_line(0,0,0,0,fill = 'green')
          self.line1 = self.canvas.create_line(0,0,0,0, fill = 'blue')
          self.text = self.canvas.create_text( ( 400 , 10 ), text = self.message)
     
     
                    #Cette ligne pose problème !
          self.canvas.grid(row = 0, column = 0)
     
       def pointeur(self, event):
          self.message = '''Fréquence : ''' + str(event.x) + '  Hz Amplitude : ' + str(event.y) + '  UA'
          self.canvas.coords(self.line1, event.x,25, event.x, 600)
          self.canvas.coords(self.line2, 0,event.y,800,event.y)
     
          self.rect = self.canvas.create_rectangle(200,1,600,20,fill='white')
          self.text = self.canvas.create_text( ( 400 , 10 ), text = self.message)

    Or, cette frame se pack sur la fenêtre n°1, au lieu de la nouvelle fenetre créée spécialement pour lui. C'est la ligne que j'ai marqué comme posant problème qui en est responsable. Mais sans elle, la frame n'apparait tout bonnement pas !

    Comment faire ??

    Merci d'avance

    cyrpaut

    P.S.: Dans GigantFourier, certaine commandes peuvent vous paraitre obscure... En fait elles appartiennent au module Snack, qui me perment de lire les sons et de générer des graphes. C'est un module génial our les musiciens/programmeurs !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    lut,
    desoler pour ton 1er post
    les 2 bouts sont dans le meme scripts??
    pour lancer une 2emme fen, apartir du 1 er scritpes tu peut utuliser
    un toplevel un nom de se type la
    si c'est 2 scrpites separer
    j'ai bidouille, un truc pour que sa marche
    import os
    os.open("chemin du gichier+aa.py")

    sa lance ton programme
    desoler, je ne peut pa t'aide plus

    si no essai, avec http://python.developpez.com/faq/?page=MessageBox

  3. #3
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067
    Par défaut
    Il faut utiliser l'objet Toplevel
    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import Tkinter as Tk
     
    root = Tk.Tk()
    root2 = Tk.Toplevel()
    root2.mainloop()

Discussions similaires

  1. Gérer plusieurs fenêtres avec AWT
    Par The_GuiGui dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 09/04/2015, 20h51
  2. Plusieurs fenêtres avec TKinter
    Par fanfouille dans le forum Tkinter
    Réponses: 10
    Dernier message: 25/11/2009, 23h29
  3. comment crée plusieurs fenêtres avec GLUT
    Par Haage dans le forum GLUT
    Réponses: 14
    Dernier message: 26/07/2007, 18h55
  4. [Outlook] ouverture plusieurs fenêtres avec même target
    Par seb_m dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/01/2007, 17h25
  5. PLusieurs fenêtre Tkinter
    Par peyro dans le forum Tkinter
    Réponses: 2
    Dernier message: 14/06/2006, 15h04

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