Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Python] Tkinter

(plusieurs petites quesitons)

    25 mars 2006 à 21:21:25

    Salut,
    D'abord désolé du titre pas très explicite ...


    Je viens de me mettre à Tkinter (je viens de wx)
    j'ai quelques petits probleme que j'aimerai que vous m'aidiez.

    Button(root, text="Voir les clients", command=visualisation).grid(row =1)
    Button(root, text="Ajouter un client", command=ajout).grid(row =2)
    Button(root, text="Modifier les données d'un client", command=modification).grid(row =3)
    Button(root, text="Supprimer un client", command=suppression).grid(row =4)

    Button(root, text="Quitter le programme", command=root.destroy).grid(row =6)


    Et le résultat est:
    Image utilisateur

    -J'aimerai savoir comment je peux faire pour que la fenetre sois dimensionner de tels maniere a ce que l'ont puisse voir le titre complet. (root.pack?)

    -J'aimerai savoir comment faire pour que tout les boutons ai la même longeur et qu'il sois centré par rapport à la fenetre (verticallement et horisontallement).


    -Pourquoi est ce que "quitter le programme" n'est il pas une ligne plus bas comme demandé dans le code?

    -C'est surement un peux bourrin la facon de quitter le programme, il y a rien d'autre?

    -Comment puis-je empecher l'agrandissement de la fenetre?


    Merci de repondre à mes questions ;)
    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2006 à 7:34:47

      pour avoir des boutons de meme longueure tu peux utiliser "width="
      exemple:
      Button(root, text="Voir les clients",width=50, command=visualisation).grid(row =1)
      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2006 à 11:24:55

        Merci pour le width (tellement bete que j'y avais pas pensé ^^)
        et de 1 de moins ^^
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          26 mars 2006 à 13:12:57

          Depuis l'aide en ligne de la classe Tk :

          resizable = wm_resizable(self, width=None, height=None)
          | Instruct the window manager whether this width can be resized
          | in WIDTH or HEIGHT. Both values are boolean values.

          >>> foo = Tk() # Crée la fenêtre
          >>> foo.resizable(0,0) # Non redimensionnable
          '' # Valeur de retour à la con
          >>> foo.resizable(0,1) # Redimensionnable seulement en hauteur
          • Partager sur Facebook
          • Partager sur Twitter
            26 mars 2006 à 13:23:49

            et de deux, merci bien :)
            • Partager sur Facebook
            • Partager sur Twitter
              27 mars 2006 à 21:31:56

              Salut,
              Pour ajouter une ligne, c'est normale, grid ne constitue que l'ordre.
              Ajoute une frame vide :
              Button(root, text="Voir les clients", command=visualisation).grid(row =1)
              Button(root, text="Ajouter un client", command=ajout).grid(row =2)
              Button(root, text="Modifier les données d'un client", command=modification).grid(row =3)
              Button(root, text="Supprimer un client", command=suppression).grid(row =4)
              Fram(root).grid(row=5)
              Button(root, text="Quitter le programme", command=root.destroy).grid(row =6)

              Voilà ma façon de quiter un programme Tkinter, crois-moi, c'est pas du joli :p .
              def Out():
                      root.quit()
                      root.destroy
                      sys.exit()
              #Avec :
              Button(root, text="Quitter le programme", command=Out).grid(row =6)

              Citation

              -J'aimerai savoir comment je peux faire pour que la fenetre sois dimensionner de tels maniere a ce que l'ont puisse voir le titre complet. (root.pack?)


              Au feeling :p
              Avec ce bout de code et en testant la bonne valeur :
              root.geometry('800x600')



              Bisous, Nyu
              • Partager sur Facebook
              • Partager sur Twitter
                31 mars 2006 à 16:12:55

                salut et merci de vos réponses :)

                J'ai mis à jours le premier poste, et il me reste qu'un seul probleme, c'est celui du bouton qui veux pas se mettre une ligne plus bas (heu oui, le coup de frame il veut pas, ou alors, je dois mettre une hauteur, mais je trouve que ça deviens bourrin).

                Question suplémentaire:

                - Comment recuperé le contenu dans Entry ?
                - Comment placer une fenetre au premier plan face à n'importe qu'elle autre programme?
                - Comment forcer ma fenetre à s'ouvrir à un endroit précis sur l'écran?

                Merci à vous :p
                • Partager sur Facebook
                • Partager sur Twitter
                  1 avril 2006 à 12:31:35

                  pour recuperer des données dans Entry

                  # en gros c'est comme sa:
                  #ton Entry dans fen1
                  nombre_entre=Entry(fen1)
                  #puis tu recupere se que tu à mis dedans dans la variable nombre(qui pourait etre du texte)
                  nombre=nombre_entre.get()


                  voila pour cette question
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 avril 2006 à 12:56:21

                    salut,

                    merci de ta réponse, mais quand j'essais, j'ai droit à:
                    Attribute Error 'None Type' object has no atribute object 'get'

                    snif
                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 avril 2006 à 14:17:27

                      Heu, tu peux essayer ça (pour les bouton) :
                      # -*- coding: Latin-1 -*-
                      from Tkinter import *
                      def visualisation(): pass
                      def ajout(): pass
                      def suppression(): pass
                      def modification(): pass
                      modification
                      def Out():
                              root.quit()
                              root.destroy
                              sys.exit()
                      root = Tk()
                      Button(root, text="Voir les clients", command=visualisation).grid(row =1)
                      Button(root, text="Ajouter un client", command=ajout).grid(row =2)
                      Button(root, text="Modifier les données d'un client", command=modification).grid(row =3)
                      Button(root, text="Supprimer un client", command=suppression).grid(row =4)

                      Button(root, text="Quitter le programme", command=Out).grid(row=6, padx=50, pady=50)


                      Mais comme tu t'en doute, c'est bourrin et ça met l'espace du dessus comme celui d'en dessous...
                      Si vraiment tu t'en sort pas, essaye le placer (à coup de px par contre :s )

                      Pour tes autres questions :

                      Citation : sloshy

                      - Comment recuperé le contenu dans Entry ?


                      He bien tu nomme ton entry (sans lui appliquer de méthode quand tu lis ta classe à ta variable...)
                      Et ensuite tu fais .get()
                      Pour info, il existe aussi une fonction delete(x) au comportement bizare.
                      Pour effacer un entry j'ai été obliger de bricoler ça :
                      def DelVals(*entries):
                          for entry in entries:
                              while entry.get() != '':
                                  entries.delete(0)


                      Citation : sloshy

                      - Comment placer une fenetre au premier plan face à n'importe qu'elle autre programme ?


                      Alors j'ai la réponse :
                      from Tkinter import *
                      root = Tk()
                      root.state(newstate = 'withdrawn')#Cache la fenêtre
                      root.state(newstate = 'zoomed')#Met le focus sur la fenêtre mais ne marche que sous wndows...

                      Citation : sloshy

                      - Comment forcer ma fenetre à s'ouvrir à un endroit précis sur l'écran?


                      Chreche du côté de la méthode positionfrom ou de la propriété distance.
                      J'ai pas trop trouvé de truc clair.
                      Aparament positionfrom ou distance (je sais plus lequel) prendrais des distances par rapport à un repère et en écriture vectoriel.
                      un string du type '3.5i+6j' quoi mais bon j'ai pas testé.



                      Bisous, Nyu
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 avril 2006 à 15:14:40

                        Merci de vos réponses.

                        Pour les boutons:
                        C'est quand même zarbi, qu'il n'y ai que des méthodes bourrin pour faire ça :s

                        Pour le entry:
                        J'essais depuis hier mais je dois rater une étape, je sais que c'est con, mais quelqun aurait pas une source qui assigne la valeur qu'on à mis dans entry à une variable?

                        pour supprimer le contenu d'un entry:
                        e.delete(0, end) :-)

                        pour la fenetre au premier plan:
                        bizarre, tkinter est censé être portable non? (enfin j'ai pas de linux sous la main pour essayé)

                        Pour les emplacements précis
                        Oui j'avais trouver un truc similaire, mais j'ai contourné le probleme ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 avril 2006 à 1:29:44

                          Un petit up de routine ^^
                          • Partager sur Facebook
                          • Partager sur Twitter

                          [Python] Tkinter

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown