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

PyQt Python Discussion :

Focus lors d'un clic sur une fenêtre au premier plan


Sujet :

PyQt Python

  1. #1
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Points : 704
    Points
    704
    Par défaut Focus lors d'un clic sur une fenêtre au premier plan
    Bonjour,
    Une fois de plus j'ai un problème que des recherches Google ne savent résoudre :'(
    J'ai bien trouvé des posts sur divers forums mais aucun n'a su m'aider ...

    Le problème est assez simple à comprendre:

    dans mon programme il y a plusieurs fenêtres, dont une avec le flag QtCore.Qt.WindowStaysOnTopHint, mais dès que je clic sur cette fenêtre les autres pop également ...
    Pour l'instant le seul moyen que je vois est de surcharger focusInEvent pour mettre en arrière plan les autres fenêtres ... mais vus que je pense toujours à la pire solution au début ...

    Ps : si quelqu'un à une idée pour un titre plus explicite je suis preneur

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 483
    Points : 9 282
    Points
    9 282
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Dans un programme qui a plusieurs fenêtres, l'option "QtCore.Qt.WindowStaysOnTopHint" dans l'une d'entre elles permet à cette fenêtre d'être toujours "au-dessus" des autres, même quand elle n'a pas le focus. C'est à dire qu'elle n'est jamais "recouverte" à l'écran par une autre fenêtre de ce programme.

    Pour cela, on met dans le __init__ de cette fenêtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
            self.show() #<= ne pas oublier après la modif des flags
    Est-ce comme ça que tu as fait?

    Précise quel OS tu utilises (avec certains Linux, il y a une option supplémentaire).

  3. #3
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Points : 704
    Points
    704
    Par défaut
    bonjour,
    Je suis sous Windows (10), voici un exemple de mon programme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    def __init__(self):
    	self.mainWindow = QtWidgets.QMainWindow(windowTitle=f"Craft'Help - build n°{localVersion}",objectName="mainWindow", windowIcon=QtGui.QIcon(os.path.join("icon", "craft'help.png")), flags=QtCore.Qt.MSWindowsFixedSizeDialogHint)
    	...
    	self.mainWindow.show()
     
    def voir_ingredients(self):
    	self.windowIngredient = QtWidgets.QDialog(self.mainWindow, modal=True, windowTitle="liste des ingrédients", windowIcon=QtGui.QIcon(os.path.join("icon", "liste.png")), flags=QtCore.Qt.Tool|QtCore.Qt.WindowStaysOnTopHint)
    	...
    	self.windowIngredient.show()
    J'ai résolu mon problème, il suffit que self.windowIngredient n'est plus de parent, cependant la fenêtre na plus exactement le même comportement modal

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 483
    Points : 9 282
    Points
    9 282
    Billets dans le blog
    6
    Par défaut
    Le comportement de la fenêtre qui a l'option WindowStaysOnTopHint n'est pas le même que si cette fenêtre était "modale": elle reste au 1er plan mais elle n'a pas forcément le focus.
    Avec une fenêtre modale, on ne peut pas donner le focus à d'autres fenêtres du programme tant qu'elle reste affichée.

  5. #5
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Points : 704
    Points
    704
    Par défaut
    oui j'avais bien compris tout ça ^^ en faite je voulais une fenêtre modal et en premier plan, mais pour que les autres fenêtres de mon programme ne pop pas quand je clique sur ma fenêtre modal & en premier plan il faut qu'elle n'est pas de parent, or si elle n'a pas de parent le comportement de "modalité" est modifié

Discussions similaires

  1. Affichage d'un dessin dans un Canvas lors d'un clic sur une image
    Par totooo dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 19/06/2009, 12h26
  2. Exception lors d'un clic sur une feuille d'un arbre
    Par gerudo dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2009, 10h59
  3. Ecouter les clics sur une fenêtre entière
    Par Flodelarab dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 07/02/2009, 21h10
  4. Réponses: 3
    Dernier message: 23/10/2007, 14h35
  5. Bloquer les clics sur une fenêtre
    Par Enzololo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/05/2006, 23h12

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