[python] à quoi sert le focus ???

Résolu
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
 fazzer -
Bonjour,

J'aimerai savoir à quoi sert le focus dans python ainsi que cette commande focus_set()

merci, d'avance !!!
A voir également:

54 réponses

sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Minute !


J'ai fait une erreur dans mon source précédent.

Je corrige et je republie.
0
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
OK Merci c cool, mais comment détruire la fenetre après que j'ai recup mon entry.
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Voilà c'est corrigé. Le menu n'était pas créé correctement:

# -*- coding: iso-8859-1 -*-

from Tkinter import *
import Tkinter
import Tkinter as Tk


class propos(Tkinter.Toplevel):
    def __init__(self,parent):
        Tkinter.Toplevel.__init__(self,parent)
        #self.title('A propos de ...')
        self.parent = parent
        self.initialize()

    def initialize(self):
        test = 0
        champNum1 = Tkinter.IntVar()
        text1 = Tkinter.Label(self, text = "Dossier Machine 2007").grid(row = 0, sticky = W)
        text2 = Tkinter.Label(self, text = "Part of *** Edition 2007").grid(row = 1, sticky = W)
        text3 = Tkinter.Label(self, text = "Copyright (c) ***. Tous droits réservés.").grid(row = 2, sticky = W)
        text4 = Tkinter.Label(self, text = "Version 1.01").grid(row = 3, sticky = W)
        text5 = Tkinter.Label(self, text = "Licence d'utilisation accordée à :").grid(row = 4, sticky = W)
        text6 = Tkinter.Label(self, text = "    - ***").grid(row = 5, sticky = W)
        button = Tkinter.Button(self, text = "OK", width = 15, textvariable = champNum1, command = self.destroy)
        button.grid(row = 6, column = 0)
        button.focus_set()

class monessai(Tkinter.Toplevel):
    def __init__(self,parent):
        Tkinter.Toplevel.__init__(self,parent)
        self.title('test_entry')
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.champText1 = Tkinter.StringVar()
        text1 = Tkinter.Label(self, text = "reponse").grid(row = 0, sticky = W)
        entr1 = Tkinter.Entry(self, textvariable = self.champText1).grid(row = 0, column = 1)
        button = Tkinter.Button(self, text = "OK", width = 15, command = self.recup_donnee)
        button.grid(row = 6, column = 0)
        button.focus_set()
        
    def recup_donnee(self):
        test = self.champText1.get()
        print test  
    

class Application(Tkinter.Tk):
    """Application principale"""
    def __init__(self, parent = None):
        Tkinter.Tk.__init__(self)
        self.parent = parent
        self.title('Dossier Machine')
        self.configure(menu=self.createMenu())
        self.can = Canvas(self,bg='light grey', height = 190, width=250, borderwidth = 2)
        self.can.pack()

    def createMenu(self):

        menubar = Tkinter.Menu(self)
        
        ### Menu <Fichier> ###
        me1 = Menu(menubar)
        me1.add_command(label = 'Nouveau dossier machine', underline = 0)
        me1.add_command(label = 'Nouveau dossier machine avec aide', underline = 1)
        me1.add_separator()
        me1.add_command(label = 'Imprimer', underline = 0)
        me1.add_separator()
        me1.add_command(label = 'Quitter', underline = 0, command = self.quit)
        menubar.add_cascade(label="Fichier", menu=me1)

        ### Menu <Edition> ###
        me2 = Menu(menubar)
        me2.add_command(label = 'Copier', underline = 4)
        me2.add_command(label = 'Coller', underline = 1)
        menubar.add_cascade(label="Edition", menu=me2)

        ### Menu <Aide> ###
        me3 = Menu(menubar)
        me3.add_command(label = 'Aide', underline = 0, command = self.essai)
        me3.add_separator()
        me3.add_command(label = 'A propos de...', underline = 7, command = self.propos)
        menubar.add_cascade(label="Aide", menu=me3)

        return menubar        
        
    def propos(self):
        propos(self)

    def essai(self):
        monessai(self)

if __name__ == '__main__':
    app = Application()
    app.mainloop()
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
OK Merci c cool, mais comment détruire la fenetre après que j'ai recup mon entry.


Voir les lignes que j'ai ajoutée/modifiées en gras:


# -*- coding: iso-8859-1 -*-

from Tkinter import *
import Tkinter
import Tkinter as Tk


class propos(Tkinter.Toplevel):
    def __init__(self,parent):
        Tkinter.Toplevel.__init__(self,parent)
        #self.title('A propos de ...')
        self.parent = parent
        self.initialize()

    def initialize(self):
        test = 0
        champNum1 = Tkinter.IntVar()
        text1 = Tkinter.Label(self, text = "Dossier Machine 2007").grid(row = 0, sticky = W)
        text2 = Tkinter.Label(self, text = "Part of *** Edition 2007").grid(row = 1, sticky = W)
        text3 = Tkinter.Label(self, text = "Copyright (c) ***. Tous droits réservés.").grid(row = 2, sticky = W)
        text4 = Tkinter.Label(self, text = "Version 1.01").grid(row = 3, sticky = W)
        text5 = Tkinter.Label(self, text = "Licence d'utilisation accordée à :").grid(row = 4, sticky = W)
        text6 = Tkinter.Label(self, text = "    - ***").grid(row = 5, sticky = W)
        button = Tkinter.Button(self, text = "OK", width = 15, textvariable = champNum1, command = self.destroy)
        button.grid(row = 6, column = 0)
        button.focus_set()

class monessai(Tkinter.Toplevel):
    def __init__(self,parent):
        Tkinter.Toplevel.__init__(self,parent)
        self.title('test_entry')
        self.parent = parent
        self.initialize()

    def initialize(self):
        self.champText1 = Tkinter.StringVar()
        text1 = Tkinter.Label(self, text = "reponse").grid(row = 0, sticky = W)
        entr1 = Tkinter.Entry(self, textvariable = self.champText1).grid(row = 0, column = 1)
        button = Tkinter.Button(self, text = "OK", width = 15, command = self.recup_donnee)
        button.grid(row = 6, column = 0)
        button.focus_set()
        
    def recup_donnee(self):
        self.valeur = self.champText1.get()
        self.destroy()

class Application(Tkinter.Tk):
    """Application principale"""
    def __init__(self, parent = None):
        Tkinter.Tk.__init__(self)
        self.parent = parent
        self.title('Dossier Machine')
        self.configure(menu=self.createMenu())
        self.can = Canvas(self,bg='light grey', height = 190, width=250, borderwidth = 2)
        self.can.pack()

    def createMenu(self):

        menubar = Tkinter.Menu(self)
        
        ### Menu <Fichier> ###
        me1 = Menu(menubar)
        me1.add_command(label = 'Nouveau dossier machine', underline = 0)
        me1.add_command(label = 'Nouveau dossier machine avec aide', underline = 1)
        me1.add_separator()
        me1.add_command(label = 'Imprimer', underline = 0)
        me1.add_separator()
        me1.add_command(label = 'Quitter', underline = 0, command = self.quit)
        menubar.add_cascade(label="Fichier", menu=me1)

        ### Menu <Edition> ###
        me2 = Menu(menubar)
        me2.add_command(label = 'Copier', underline = 4)
        me2.add_command(label = 'Coller', underline = 1)
        menubar.add_cascade(label="Edition", menu=me2)

        ### Menu <Aide> ###
        me3 = Menu(menubar)
        me3.add_command(label = 'Aide', underline = 0, command = self.essai)
        me3.add_separator()
        me3.add_command(label = 'A propos de...', underline = 7, command = self.propos)
        menubar.add_cascade(label="Aide", menu=me3)

        return menubar        
        
    def propos(self):
        propos(self)

    def essai(self):
        m = monessai(self)
        self.wait_window(m)  # On attend la fermeture de la fenêtre.
        print "La valeur entree est ",m.valeur

if __name__ == '__main__':
    app = Application()
    app.mainloop()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
ok merci c'est vraiment gentil à toi. Tout ce que tu as fait pour moi va beaucoup m'aider alors encore merci. Si j'ai encore des problème je renvoie un message.
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Je suis content d'avoir pu aider.

N'hésite pas à consulter le wiki francophone, il y a plein d'informations utiles:
http://wikipython.flibuste.net/
0
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
excuse moi mais j'ai un petit problème je te met le code :

# -*- coding: iso-8859-1 -*-


################################
# Import des librairies utiles #
################################
import sys, time, os, os.path, shutil
from pprint import *
#~ import time
import locale
from Tkinter import *
import Tkinter
import Pmw

class liste_equipement_nb_code(Tkinter.Toplevel):
	def __init__(self, parent):
		Tkinter.Toplevel.__init__(self, parent)
		self.title('Liste des équipements')
		self.parent = parent
		self.suite()

	def suite(self):
		self.champNum1 = Tkinter.StringVar()
		text1 = Tkinter.Label(self, text = "Quel est le nombre de code maintenance ? ").grid(row = 0, sticky = W)
		entr1 = Tkinter.Entry(self, textvariable = self.champNum1, width = 4)
		entr1.grid(row = 0, column = 1)
		entr1.focus_set()
		ok = Tkinter.Button(self, text = "OK", width = 15, command = self.recup_nb_code).grid(row = 1, column = 1)

	def recup_nb_code(self):
		self.nb_code = self.champNum1.get()
		self.destroy()

class liste_equipement_code(Tkinter.Toplevel):
	def __init__(self, parent):
		Tkinter.Toplevel.__init__(self, parent)
		self.title('Liste des équipements')
		self.parent = parent
		self.suite()

	def suite(self):
		self.champText1 = Tkinter.StringVar()
		self.champText2 = Tkinter.StringVar()
		self.champText3 = Tkinter.StringVar()
		text1 = Tkinter.Label(self, text = "Code maintenance : ").grid(row = 0, sticky = W)
		text2 = Tkinter.Label(self, text = "Equipement à configurer : ").grid(row = 1, sticky = W)
		text3 = Tkinter.Label(self, text = "Opérations à réaliser : ").grid(row = 2, sticky = W)
		entr1 = Tkinter.Entry(self, textvariable = self.champText1, width = 7)
		entr1.grid(row = 0, column = 1)
		entr1.focus_set()
		entr2 = Tkinter.Entry(self, textvariable = self.champText2, width = 45).grid(row = 1, column = 1)
		entr3 = Tkinter.Entry(self, textvariable = self.champText3, width = 45).grid(row = 2, column = 1)
		ok = Tkinter.Button(self, text = "OK", width = 15, command = self.recup_code).grid(row = 3, column = 1)

	def recup_code(self):
		self.code = self.champText1.get()
		self.equipement = self.champText2.get()
		self.operation = self.champText3.get()
		self.destroy()

class Application(Tkinter.Tk):
	"""Application principale"""
	def __init__(self, parent = None):
		Tkinter.Tk.__init__(self)
		self.parent = parent
		self.title('Dossier Machine')
		self.configure(menu=self.createMenu())
		self.can = Canvas(self,bg='light grey', height = 190, width=250, borderwidth = 2)
		self.can.pack()

	def createMenu(self):

		menubar = Tkinter.Menu(self)
		
		### Menu <Fichier> ###
		me1 = Menu(menubar)
		me1.add_command(label = 'Nouveau dossier machine', underline = 0, command = self.nouveau_dossier)
		me1.add_command(label = 'Nouveau dossier machine avec aide', underline = 1)
		me1.add_separator()
		me1.add_command(label = 'Imprimer', underline = 0)
		me1.add_separator()
		me1.add_command(label = 'Quitter', underline = 0, command = self.quit)
		menubar.add_cascade(label="Fichier", menu=me1)

		### Menu <Edition> ###
		me2 = Menu(menubar)
		me2.add_command(label = 'Copier', underline = 4)
		me2.add_command(label = 'Coller', underline = 1)
		menubar.add_cascade(label="Edition", menu=me2)

		### Menu <Aide> ###
		me3 = Menu(menubar)
		me3.add_command(label = 'Aide', underline = 0)
		me3.add_separator()
		me3.add_command(label = 'A propos de...', underline = 7)
		menubar.add_cascade(label="Aide", menu=me3)

		return menubar

	def nouveau_dossier(self):
		equipement_nb_code = liste_equipement_nb_code(self)
		self.wait_window(equipement_nb_code)
		nb_code = equipement_nb_code.nb_code
		print nb_code

		i = 0
		lst_code = []
		lst_equipement = []
		lst_operation = []
		while i < nb_code:
			equipement_code = liste_equipement_code(self)
			self.wait_window(equipement_code)
			i = i+1
			print i     

if __name__ == '__main__':
	app = Application()
	app.mainloop()


Quand je fais fichier nouveau dossier machine, il me demande le nombre de code main et suivant le résultat je lui met il n'affiche pas le nombre correct de fenetre que je veu. Essaye le. Comment faire pour le fasse autant de fois que je veux ?
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Juste avant le while, ajoute:
print type(nb_code),type(i)

Et là tu verra:
<type 'str'> <type 'int'>


Autrement dit tu es en train de comparer une chaine avec un nombre :-)


Pour que ça marche correctement, il faudrait remplacer la ligne:
self.nb_code = self.champNum1.get()

par:
self.nb_code = int(self.champNum1.get())
0
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
Merci
0
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, ce n'est pas un problème que j'ai cette fois-ci !!!!!!

Lorsque je lance mon programme j'ai plusieurs fenetre qui s'ouvre les unes après les autres et elles ne sont jamais à la même place.

Comment faire pour qu'elle s'ouvre toujours au même endroit ?

0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Je ne sais pas désolé.

Peut-être en regarde du côté de la méthode geometry()
0
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Est-ce que tu sais si python à une fonction imprimable, c'est t'a dire que les données que l'utilisateur rentre je voudrais qu'il me les imprime sur papier. C'est possible ????
0
Todesfall Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour tout
0
momoci Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
merci infiniment pour votre réponse . mais sis je le suprime de mon ordinateur est ce grave...?
0