Dans mon cas, j'essayais de distinguer entre un utilisateur redimensionnant un Gtk.Paned de l'utilisateur redimensionnant la fenêtre entière. Les deux émettent le signal notify::position
. Ma solution était, puisque je ne peux pas savoir si l'utilisateur redimensionne la fenêtre du widget, inverser ce que je voulais savoir. Enregistrer si l'utilisateur a repositionné le widget et ignorer les mises à jour si l'utilisateur ne les a pas initiées sur mon widget.
C'est à dire, au lieu de test « si la fenêtre redimensionnée » J'ai enregistré les je pouvais tester à la place « s localement button-press-event
et button-release-event
donc « si un widget étant repositionné »
from gi.repository import Gtk
class MyPaned(Gtk.Paned):
_user_activated = False
def on_position(self, _, gparamspec):
if self._user_activated:
# widget touched
else:
# window resized (probably)
def on_button_press(self, *_):
self._user_activated = True
def on_button_release(self, *_):
self._user_activated = False
dev __init__(self, *args):
super(MyPaned, self).__init__(*args)
self.connect('notify::position', self.on_position)
self.connect('button-press-event', self.on_button_press)
self.connect('button-release-event', self.on_button_release)
efficacement par enregistré Lorsque l'utilisateur a démarré et terminé l'interaction avec mon widget directement, je pouvais supposer que le reste du temps était dû à la redimensionnement de la fenêtre. (Jusqu'à ce que je trouve plus de cas)
Avez-vous trouvé un moyen de faire cela? – clahey
Non. Si je le fais, ça va apparaître ici. –