Fenêtre superposant une autre fenêtre
Phidippides
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
Phidippides Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Phidippides Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Tout d'abord je n'ai pas beaucoup d'expérience avec Python, cela fait seulement quelques mois que je l'ai découvert.
Je suis en train de développer un solveur de sudoku mais j'ai un problème que je n'arrive pas à résoudre.
J'ai créé une première fenêtre pour ma grille de Sudoku qui est divisée en cellules.
Parfois évidemment, il peut y avoir plusieurs possibilités pour une même cellule jusqu'à ce que l'on déduise le seul chiffre possible.
Pour cela, j'ai créé une petite fenêtre aux dimensions de la cellule qui est elle-même divisée en 9 mini-cellules et dans laquelle l'utilisateur peut entrer les chiffres possibles.
Tout cela marche très bien mais si je clique sur le '-' (en haut à droite) de la fenêtre principale, celle-ci est iconifiée mais pas la ou les petites mini-grilles superposées aux cellules de mon Sudoku (ma fenêtre principale). De la même façon, si je superpose une autre fenêtre (par exemple mon moteur de recherche) à ma grille de Sudoku, cette dernière est effectivement cachée mais pas les petites fenêtres (mini-grilles) qui apparaissent toujours.
J'ai essayé de détecter un 'event' qui est 'Unmap' pour résoudre le problème. Cela marchait effectivement très bien quand j'étais sous Windows 7 mais maintenant que je tourne sous Linux (Ubuntu avec GNOME shell), cela ne marche plus. J'ai essayé des tas d'autres 'events' mais je n'arrive pas à m'en sortir.
Mes questions sont :
1) Quel est l'événement déclenché quand je clique gauche sur le '-' (en haut à droite) de la fenêtre principale, pour iconifier celle-ci ? Et comment récupérer cet événement pour lancer une fonction qui cacherait mes mini-grilles ?
2) Quand je recouvre ma grille de Sudoku (fenêtre principale) par une autre fenêtre (extérieure à mon logiciel), comment faire en sorte que mes mini-grilles soient aussi recouvertes ?
Je serais vraiment reconnaissant à ceux qui pourraient me donner un coup de pouce.
Tout d'abord je n'ai pas beaucoup d'expérience avec Python, cela fait seulement quelques mois que je l'ai découvert.
Je suis en train de développer un solveur de sudoku mais j'ai un problème que je n'arrive pas à résoudre.
J'ai créé une première fenêtre pour ma grille de Sudoku qui est divisée en cellules.
Parfois évidemment, il peut y avoir plusieurs possibilités pour une même cellule jusqu'à ce que l'on déduise le seul chiffre possible.
Pour cela, j'ai créé une petite fenêtre aux dimensions de la cellule qui est elle-même divisée en 9 mini-cellules et dans laquelle l'utilisateur peut entrer les chiffres possibles.
Tout cela marche très bien mais si je clique sur le '-' (en haut à droite) de la fenêtre principale, celle-ci est iconifiée mais pas la ou les petites mini-grilles superposées aux cellules de mon Sudoku (ma fenêtre principale). De la même façon, si je superpose une autre fenêtre (par exemple mon moteur de recherche) à ma grille de Sudoku, cette dernière est effectivement cachée mais pas les petites fenêtres (mini-grilles) qui apparaissent toujours.
J'ai essayé de détecter un 'event' qui est 'Unmap' pour résoudre le problème. Cela marchait effectivement très bien quand j'étais sous Windows 7 mais maintenant que je tourne sous Linux (Ubuntu avec GNOME shell), cela ne marche plus. J'ai essayé des tas d'autres 'events' mais je n'arrive pas à m'en sortir.
Mes questions sont :
1) Quel est l'événement déclenché quand je clique gauche sur le '-' (en haut à droite) de la fenêtre principale, pour iconifier celle-ci ? Et comment récupérer cet événement pour lancer une fonction qui cacherait mes mini-grilles ?
2) Quand je recouvre ma grille de Sudoku (fenêtre principale) par une autre fenêtre (extérieure à mon logiciel), comment faire en sorte que mes mini-grilles soient aussi recouvertes ?
Je serais vraiment reconnaissant à ceux qui pourraient me donner un coup de pouce.
A voir également:
- Fenêtre superposant une autre fenêtre
- Fenetre windows - Guide
- Fenêtre hors écran windows 11 - Guide
- Mcafee fenetre intempestive - Accueil - Piratage
- Fenetre de navigation privée - Guide
- Fermer une fenetre de force - Guide
1 réponse
Après une recherche sur le terme Unmap, j'en déduis que vous utilisez Tkinter, ce qui est primordial à préciser.
Si vous lisez l'anglais et cette discussion, il semble que le terme "unmap" n'a pas le même sens sous Linux, et en particulier ce n'est pas l'événement qui ce déclenche en cliquant sur le "-".
Sur la même discussion, une solution avec wmctrl et xprop est proposée, mais vous allez vous retrouver avec du code non portable (différent selon s'il est sous Linux ou Windows).
Pour déterminer si un autre événement pourrait vous intéresser, je vous suggère de créer un petit programme tout simple qui imprime tous les événements reçus 1 fois par seconde. Vous cliquez sur - et vous regarder ce qui a été affiché à l'écran.
Je n'ai pas bien compris comment était organisée votre interface graphique et vos mini grilles. Elles sont de quelles classes vos mini grilles ? Classe Tk ?
Si vous lisez l'anglais et cette discussion, il semble que le terme "unmap" n'a pas le même sens sous Linux, et en particulier ce n'est pas l'événement qui ce déclenche en cliquant sur le "-".
Sur la même discussion, une solution avec wmctrl et xprop est proposée, mais vous allez vous retrouver avec du code non portable (différent selon s'il est sous Linux ou Windows).
Pour déterminer si un autre événement pourrait vous intéresser, je vous suggère de créer un petit programme tout simple qui imprime tous les événements reçus 1 fois par seconde. Vous cliquez sur - et vous regarder ce qui a été affiché à l'écran.
Je n'ai pas bien compris comment était organisée votre interface graphique et vos mini grilles. Elles sont de quelles classes vos mini grilles ? Classe Tk ?
Je n'ai pas pu détecter l'"event" quand on clique sur le '-' pour iconifier la fenêtre principale.
J'ai en fait essayer d'afficher les "events" quand on clique gauche au niveau de la fenêtre Tk mais rien n'est affiché quand on clique sur le '-'. Par contre il m'affiche bien tous les "events" quand je clique n'importe où dans la fenêtre. Je vous donne un code de test ci-dessous :
Les fenêtres toplevel dont les bordures ont été enlevées ne peuvent plus être gérées via le gestionnaire de fenêtre du système d'exploitation.
https://www.tcl.tk/man/tcl8.4/TkCmd/wm.htm#M37
Il serait donc sans doute plus simple d'insérer ces toplevels dans le canvas avec create_window pour ne pas se compliquer la vie.
Je vais tester pour voir si ça me satisfait.
Encore grand merci à toi jokler.