strobe
Ноя. 19, 2008 20:58:07
Подскажите как в pyGTK сделать, чтобы окно можно было перемещать при нажатой кнопке мыши в области окна? надо отлавливать нажатие кнопки, отслеживать координаты курсора и двигать по ним окно или есть способ по проще?
еще как можно сделать окно которое отдетачивается от handlebox - поверх всех окон - в документации написано про простые окна, что не рекомендуется делать т.к. этим должен заниматься виндовс менеджер но на win его как такового нет ..а у handlebox даже и свойства такого нет
The gray Cardinal
Ноя. 20, 2008 17:55:24
Под Gnome любое окно можно перемещать при нажатой кнопке мыши с альтом. Под виндой есть специальные утилиты, которые могут это эмулировать. Имхо, изобретать здесь лисапед не имеет смысла, овчинка не стоит выделки.
strobe
Ноя. 20, 2008 20:41:07
а что за утилиты? если такие которые можно встроить в приложение?
в общем надо это для того чтобы сделать нечто похожее на “корзинку” как например у flashget, в которую пользователь может перетащить драг анд дропом файлы. Помнится в linux у kget тоже есть такая - в виде синей стрелки, да и если вспомнить у многих прог есть подобные окна.
Может я проcто не понимаю и пытаюсь делать это с помощью окна а нужен какой-то другой виджет или еще что?
The gray Cardinal
Ноя. 20, 2008 21:20:07
Скажу честно, утилит, которые можно “встроить в приложение” - не знаю. Есть утилита AutoHotkey, на скриптовом языке которой можно написать скрипт, который даст возможность перемещать любое окно таким способом.
P.S. Может, насчёт “овчинки” я и не прав.
strobe
Ноя. 21, 2008 01:09:31
вот что то похожее есть в доке:
gtk.Window.begin_move_drag
def begin_move_drag(button, root_x, root_y, timestamp)
button :
the mouse button that initiated the drag
root_x :
the X position where the user clicked to initiate the drag, in root window coordinates
root_y :
the Y position where the user clicked to initiate the drag
timestamp :
the timestamp from the click event that initiated the drag
The begin_move_drag() method starts moving a window when the user presses the mouse button specified by button at the location specified by root_x and root_y at the time specified by timestamp. This method is used if an application has window movement grips. When PyGTK can support it, the window movement will be done using the standard mechanism for the window manager or windowing system. Otherwise, PyGTK will try to emulate window movement, potentially not all that well, depending on the windowing system.
только не пойму от куда все это : “button, root_x, root_y, timestamp” взять? у меня опыт c gtk да и вобще с gui не большой)
gmorgunov
Ноя. 21, 2008 07:36:29
Привет.
Я нашел у себя в SUSE примерчик DragDropDemo.py и к нему dndpixmap.py ( образы открытой и закрытой корзины
- Trash). Если хотите могу переслать. Но там непросто все(имхо) :)
strobe
Ноя. 21, 2008 11:40:16
да этот примерчик есть я собственно им и пользуюсь, но там нет ничего насчет того, чтобы перемешать окна, в принципе да через драг энд дроп по всей видимости можно это сделать т.е как только наступает событие захвата надо отслеживать положения курсора и соответственно двигать окно по этим координатам, но это кажется слишком сложным решением чтобы было правдой. Мне думается способ перемещения окна должен был предусмотрен в самом виджете.
что это за функция gtk.Window.begin_move_drag ? не она ли