[python] à quoi sert le focus ???

Résolu/Fermé
Todesfall Messages postés 70 Date d'inscription lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014 - 24 mai 2007 à 14:30
 fazzer - 17 mai 2018 à 00:17
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 mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
30 mai 2007 à 17:05
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 lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014
30 mai 2007 à 17:05
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 mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
30 mai 2007 à 17:08
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 mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
30 mai 2007 à 17:13
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 lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014
31 mai 2007 à 08:24
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 mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
31 mai 2007 à 09:54
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 lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014
31 mai 2007 à 11:56
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 mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
31 mai 2007 à 13:24
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 lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014
31 mai 2007 à 13:44
Merci
0
Todesfall Messages postés 70 Date d'inscription lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014
4 juin 2007 à 10:53
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 mercredi 29 août 2001 Statut Modérateur Dernière intervention 21 octobre 2019 15 655
4 juin 2007 à 13:45
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 lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014
7 juin 2007 à 10:21
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 lundi 30 avril 2007 Statut Membre Dernière intervention 17 septembre 2014
11 juin 2007 à 16:47
Merci pour tout
0
momoci Messages postés 3 Date d'inscription lundi 10 décembre 2007 Statut Membre Dernière intervention 24 décembre 2007
23 déc. 2007 à 15:31
merci infiniment pour votre réponse . mais sis je le suprime de mon ordinateur est ce grave...?
0