PyGTK - Arrastar e Soltar
Widgets com X Window associado são capazes de arrastar e soltar. No programa, um widget como fonte e / ou destino para arrastar e soltar deve primeiro ser designado. O widget definido como fonte pode enviar os dados arrastados. O widget de destino aceita quando os dados arrastados são soltos nele.
As etapas a seguir estão envolvidas na configuração de um aplicativo habilitado para arrastar e soltar -
Step 1 - Configurando um widget de fonte.
Step 2 - O método drag_source_set () especifica os tipos de destino para uma operação de arrastar -
widget.drag_source_set(start_button_mask, targets, info)
Step 3 - O argumento start_button_mask especifica uma máscara de bits de botões que inicia a operação de arrastar.
Step 4 - O argumento de destino é uma lista de tuplas desta estrutura -
(target, flags, info)
O argumento de destino é uma string que representa o tipo de arrastar, por exemplo, text / plain ou image / x-xpixmap.
Step 6 - Os seguintes sinalizadores são predefinidos -
- gtk.TARGET_SAME_APP
- gtk.TARGET_SAME_WIDGET
Step 7 - Não haverá limitação, pois o sinalizador é definido como 0.
Se o widget não for obrigado a atuar como fonte, ele pode ser desarmado -
widget.drag_source_unset()
O sinal da fonte emite sinais. A tabela a seguir lista os sinais e seus retornos de chamada.
drag_begin | def drag_begin_cb (widget, drag_context, dados): |
drag_data_get | def drag_data_get_cb (widget, drag_context, selection_data, info, time, data): |
drag_data_delete | def drag_data_delete_cb (widget, drag_context, dados): |
drag_end | def drag_end_cb (widget, drag_context, dados): |
Configurando um widget de destino
O método drag_dest_set () especifica qual widget pode receber dados arrastados.
widget.drag_dest_set(flags, targets, action)
O parâmetro flags pode assumir uma das seguintes constantes -
gtk.DEST_DEFAULT_MOTION | Isso verifica se o arrastar corresponde à lista de alvos e ações possíveis deste widget e, em seguida, chama o drag_status () conforme apropriado. |
gtk.DEST_DEFAULT_HIGHLIGHT | Isso desenha um destaque neste widget, desde que arraste sobre ele |
gtk.DEST_DEFAULT_DROP | Quando ocorre uma queda, se o arrasto corresponder à lista de alvos possíveis e chamadas de ações deste widget drag_get_data()em nome do widget. Quer a queda seja bem-sucedida ou não, liguedrag_finish(). Se a ação foi um movimento e o arrasto foi bem-sucedido, TRUE será passado para o parâmetro de exclusão paradrag_finish(). |
gtk.DEST_DEFAULT_ALL | Se definido, especifica que todas as ações padrão devem ser executadas. |
O destino é uma lista de tuplas contendo informações do destino. O argumento de ações é uma máscara de bits ou uma combinação de um ou mais dos seguintes valores -
- gtk.gdk.ACTION_DEFAULT
- gtk.gdk.ACTION_COPY
- gtk.gdk.ACTION_MOVE
- gtk.gdk.ACTION_LINK
- gtk.gdk.ACTION_PRIVATE
- gtk.gdk.ACTION_ASK
O manipulador de "movimento de arrastar" deve determinar se os dados de arrastar são apropriados, combinando os destinos de destino com o gtk.gdk.DragContext alvos e, opcionalmente, examinando os dados de arrasto chamando o drag_get_data()método. ogtk.gdk.DragContext. drag_status() método deve ser chamado para atualizar o drag_context status.
O manipulador "arrastar e soltar" deve determinar o destino correspondente usando o drag_dest_find_target() método e, em seguida, peça os dados de arrastar usando o drag_get_data()método. Os dados estarão disponíveis no manipulador "arrastar dados recebidos".