PyQt Focus De Fenêtre
Je suis en train de donner le focus à une fenêtre si l'utilisateur clique sur une autre fenêtre.
Droit maintenant, j'ai deux fenêtres: la Fenêtre de Une est derrière, et la Fenêtre B est en face. Lorsque la Fenêtre apparaît, il désactive la Fenêtre de A. Maintenant, ce que je veux, c'est que chaque fois que l'utilisateur clique en dehors de la Fenêtre de B, il doit donner le focus à la Fenêtre B.
Voici le code de la Fenêtre B:
class window_b(QtGui.QDialog):
def __init__(self,parent=None):
super(window_b, self).__init__(parent)
window_a.setEnabled(False)
self.ui = Ui_Form_window_b()
self.ui.setupUi(self)
self.setFocusPolicy(QtCore.Qt.StrongFocus)
def focusOutEvent(self,event):
self.setFocus(True)
self.activateWindow()
self.raise_()
self.show()
J'ai essayé setFocus
et activateWindow
, mais cela n'a pas donner le focus à la Fenêtre B.
Des suggestions?
Aimeriez-vous ce comportement à l'égard de toutes les autres fenêtres ou seulement à la Fenêtre A. Si vous voulez que le dernier que vous pourriez faire de Fenêtre B une fenêtre modale en.wikipedia.org/wiki/Modal_window. Fenêtre alors B est un enfant de la Fenêtre qui par la suite ne peut pas être porté, aussi longtemps que la Fenêtre B est ouvert.
OriginalL'auteur Uahmed | 2012-09-05
Vous devez vous connecter pour publier un commentaire.
Pour obtenir
window_b
pour toujours rester au top, il faut ajouter les windowflagQtCore.Qt.WindowStaysOnTopHint
. Dans votre__init__
ajouter l'appelJe dois ajouter que ce n'est une allusion à l'gestionnaire de fenêtrage et non pas une garantie de réussite.
Ah ok. J'ai lu toujours en discussion, mais mon cerveau a fait toujours:). Désolé
Merci il a résolu la moitié de mon problème 🙂
toute suggestion tendant à donner le focus à la fenêtre ?
OriginalL'auteur halex
self.raise_()
suivie par unself.activateWindow()
devraient être les commandes que vous cherchez, bien qu'il semble y avoir un certain genre de questions que sur mon système d'exploitation Debian, par exemple, si je clique sur une fenêtre est maximisée, la fenêtre d'obtenir accent, mais il va aussi disparaître, ressemble à une sorte de bug, la séquence dans lasetTopLevelWindow
méthode de contourner ce comportement:OriginalL'auteur