Nel mio caso stavo cercando di distinguere tra un utente che ridimensiona un Gtk.Paned dall'utente che ridimensiona l'intera finestra. Entrambi hanno emesso il segnale notify::position
.
La mia soluzione era, dal momento che non posso sapere se l'utente sta ridimensionando la finestra dal widget, invertire ciò che volevo sapere. Registra se l'utente ha riposizionato il widget e ignora gli aggiornamenti se l'utente non li ha avviati sul mio widget.
vale a dire, invece di test "se la finestra viene ridimensionata" ho registrato le button-press-event
e button-release-event
's localmente così ho potuto invece verificare 'se widget di essere rimesso in posizione'
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)
efficacemente registrati quando l'utente iniziava e finiva di interagire direttamente con il mio widget, potevo supporre che il resto del tempo fosse dovuto alla ridimensionamento della finestra. (Fino a quando trovo più casi)
Hai trovato un modo per farlo? – clahey
No. Se lo faccio, verrà visualizzato qui. –