Bonjour !
Voilà, je pense que tout est dit dans le titre
En fait, il s'agit de l'ouverture d'une fenêtre qui demande confirmation pour quitter le programme, or elle s'ouvre derrière la fenêtre principale, et pour l'utilisateur, ça n'est pas très agréable de devoir bouger des fenêtres pour quitter le programme.
J'aimerais donc savoir s'il existe une fonction permettant de mettre une fenêtre au premier plan
Tu devrais trouver ton bonheur du coté des méthodes en rapport aux focus des fenêtres et widgets. Et tu trouvera encore plus de bonheur en cherchant de la docs sur internet. Bien qu'elles ne datent pas toutes de la dernière pluie, elles ne sont pas complétements obselètes (et il y en a beaucoup en français qui plus est ).
Ah damned ! Je me suis mélangé les pinceaux ouaip, désolé. Du coup je suis allé me renseigner sur le net pour faire bonne figure...
Et c'est bien plus compliqué que je ne le pensais, raison de plus pour utiliser wxPython héhé
Enfin, apparemment des solutions existent mais sont liées à la plateforme sur laquelle tourne le programme... pour window il y a une indication sur ce forum en donnant un attribut à la fenêtre principale.
En l'occurence je pense que les méthodes widgets.focus() ou toplevel.focus_force() (dans le cas où l'application entière n'a pas le focus) sont plus adaptées et plus simple.
Citation
Et c'est bien plus compliqué que je ne le pensais, raison de plus pour utiliser wxPython héhé
C'est de bonne guerre...
Edit:
Toutes mes excuse à clic4 !
Après quelques tests, je remarque qu'il y a deux comportements différents selon que la fenêtre secondaire s'ouvre en même temps que la principal ou après une action de l'utilisateur :
from tkinter import *
# En même temps :
boss1 = Tk()
soufifre1 = Toplevel(boss1)
boss1.title('Boss1')
soufifre1.title('Sous-fifre1')
soufifre1.wm_attributes('-topmost', 1)
boss1.mainloop()
# Après une action de l'utilisateur :
def get_soufifre(master):
soufifre2 = Toplevel(master)
soufifre2.title('Sous-fifre2')
soufifre2.focus()
boss2 = Tk()
boss2.title('Boss2')
Button(boss2, text='Get soufifre', command=lambda: get_soufifre(boss2)).grid()
boss2.mainloop()
from Tkinter import *
def quitter():
fen = Toplevel(root)
fen.grab_set()
fen.focus_set()
b = Button(fen, text = "Ok", command = root.quit).pack()
root = Tk()
bouton = Button(root, text = "quitter", command=quitter).pack()
root.mainloop()
Ça fonctionne apparemment. La toplevel est en avant plan et la principale en arrière plan est inutilisable tant qu'il n'y a pas action sur le bouton appartenant à Toplevel.
Oui, cela fonctionne parce que c'est à l'utilisateur de faire apparaitre la seconde fenêtre, mais si les deux fenêtres s'ouvrent en même temps la principal reste devant et la seconde est en arriere plan malgrès le fait qu'elle ai le focus.
Mais bon, je vois pas trop l'utilité de démarrer les deux fenêtres en même temps.
Merci à vous deux
Ta méthode marche plutôt bien pour le moment Fred1599.
Je passe au vert !
Yakork
Et voilà !
Tkinter : Mettre une fenêtre au premier plan
× 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.
Et voilà !
Et voilà !