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 :

Sélection d'item à partir de sa position


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 27
    Par défaut Sélection d'item à partir de sa position
    Re-bonjour, encore moi..
    malgré de nombreuses recherches, je n'ai pas trouvé
    de méthodes permettant de sélectionner un item par rapport à sa position dans la fenêtre tkinter, j'ai vu que ça existait pour les items du canevas mais rien pour les items hors du canevas. quelqu'un sait comment faire?

    merci d'avance, promis c'est ma dernière question

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    malgré de nombreuses recherches, je n'ai pas trouvé
    Je pense que c'est normal, pour peu que j'ai compris, en quoi cela va vous servir d'avoir les positions des widgets à part bien-sûr pour le widget Canvas, car il permet de dessiner?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 27
    Par défaut
    Je cherchais quelque chose du genre pour pouvoir supprimer/recréer une zone de texte afin de la rafraichir sachant que je connais la position de ces objets étant donné que leur position ne doit pas évoluer au cours du temps. Certes j'aurai pu le faire plus simplement en utilisant le .config seulement je décompose mon programme en plusieurs modules (dont un uniquement pour la gestion de ces labels et de la fenêtre 'hors canevas') et utiliser des variables globales ne me semble pas non plus être la solution la plus appropriée ..

    Cordialement,

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Je ne comprend pas bien, donnez moi un exemple simple de ce que vous souhaitez faire...

    Vous pouvez utilisez la classe StringVar du module Tkinter et sa méthode set, si je comprend bien ce que vous voulez, c'est updater votre Label?

    Edit : Ah non j'ai pigé, vous voulez supprimer tel ou tel widget et recréer un autre widget à cet endroit. C'est un peu bancal comme manière de concevoir une interface graphique, n'y a-t-il pas d'autres moyens?

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonsoir,

    Ici:
    winfo_containing(rootX, rootY, displayof=0) [#]

    Returns the widget at the given position, or None if there is no such window, or it isn’t owned by this application. The coordinates are given relative to the screen’s upper left corner.

    rootX
    rootY
    displayof
    Mais bon... Inutile ici.
    pour pouvoir supprimer/recréer une zone de texte afin de la rafraichir sachant que je connais la position de ces objets étant donné que leur position ne doit pas évoluer au cours du temps.
    Vous connaissez aussi le nom Python du Widget et il vous suffit d'utiliser .config comme vous le dite car
    Certes j'aurai pu le faire plus simplement en utilisant le .config seulement je décompose mon programme en plusieurs modules
    n'est qu'une 'construction du code'.

    @+

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 27
    Par défaut
    Ce que je veux faire c'est pouvoir créer puis modifier un label grâce à une ou deux fonctions extérieures au module principal, sans utiliser de variables globales.

    Exemple: je crée une fenêtre dans mon module "principal":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def init():
     
        fenetre=Tkinter.Tk()
        fenetre.geometry('500x500')
        interaction.zonedetexte(fenetre,'pas encore changé le texte')
        interaction.zonedetexte(fenetre,'le texte a changé')
        fenetre.mainloop()
    La fonction en question partiellement complétée dans le module interaction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def zonedetexte(fenetre,nouveautexte):
     
        texte=Tkinter.Label(fenetre,text=nouveautexte,bg='yellow',fg="black")
        texte.place(relx=0.2,rely=0.85)
    J'arrive donc à superposer les labels mais ce n'est pas vraiment propre, c'est pourquoi je cherchais une commande permettant par exemple ici de sélectionner l'objet en (0.2,0.85) pour le supprimer avant d'en créer un nouveau.Au vu du nombre de zones de texte que je dois manipuler, je ne me vois pas utiliser de variables globales.

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    D'où ma proposition avec StringVar()

    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
    from tkinter import *
     
    def change():
        var.set("KO")
        my_label['text'] = var.get()
     
    root = Tk()
     
    var = StringVar()
    var.set("OK")
    my_label = Label(root, text=var.get())
    my_label.pack()
     
    my_button = Button(root, text="PRESS", command=change).pack()
     
    root.mainloop()

  8. #8
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    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
    def changetexte(widget, nouveautexte):
        widget.config(text=nouveautexte)
     
     
    def init():
        fenetre = Tkinter.Tk()
        fenetre.geometry("500x500")
        texte = Tkinter.Label(fenetre, text="pas encore changé le texte",
                              bg="yellow", fg="black")
        texte.pack()
        Tkinter.Button(fenetre, text="Change",
                       command=lambda: changetexte(texte, \
                       "le texte a changé")).pack()
        fenetre.mainloop()
     
    init()
    Ou est la difficulté ?

    La classe Variable Tkinter est pour moi une réponse rapide qui ne permet pas au débutant de suivre ses variable : c'est dommage.

    @+

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/01/2007, 23h38
  2. [XSLT] [JavaScript] tri + affichage à partir d'une position
    Par Fabouney dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 21/11/2006, 08h46
  3. [CR 10] Sélection d'enregistrements à partir d'un résumé
    Par sylviefrfr dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 14/06/2006, 11h24
  4. Réponses: 4
    Dernier message: 29/04/2006, 22h35
  5. Sélection des items du menu
    Par Depteam1 dans le forum MFC
    Réponses: 3
    Dernier message: 04/03/2005, 11h30

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