Форум сайта python.su
Подскажите как в pyGTK сделать, чтобы окно можно было перемещать при нажатой кнопке мыши в области окна? надо отлавливать нажатие кнопки, отслеживать координаты курсора и двигать по ним окно или есть способ по проще?
еще как можно сделать окно которое отдетачивается от handlebox - поверх всех окон - в документации написано про простые окна, что не рекомендуется делать т.к. этим должен заниматься виндовс менеджер но на win его как такового нет ..а у handlebox даже и свойства такого нет
Отредактировано (Ноя. 20, 2008 00:49:21)
Офлайн
Под Gnome любое окно можно перемещать при нажатой кнопке мыши с альтом. Под виндой есть специальные утилиты, которые могут это эмулировать. Имхо, изобретать здесь лисапед не имеет смысла, овчинка не стоит выделки.
Офлайн
а что за утилиты? если такие которые можно встроить в приложение?
в общем надо это для того чтобы сделать нечто похожее на “корзинку” как например у flashget, в которую пользователь может перетащить драг анд дропом файлы. Помнится в linux у kget тоже есть такая - в виде синей стрелки, да и если вспомнить у многих прог есть подобные окна.
Может я проcто не понимаю и пытаюсь делать это с помощью окна а нужен какой-то другой виджет или еще что?
Отредактировано (Ноя. 20, 2008 21:29:01)
Офлайн
Скажу честно, утилит, которые можно “встроить в приложение” - не знаю. Есть утилита AutoHotkey, на скриптовом языке которой можно написать скрипт, который даст возможность перемещать любое окно таким способом.
P.S. Может, насчёт “овчинки” я и не прав.
Офлайн
вот что то похожее есть в доке:
gtk.Window.begin_move_dragтолько не пойму от куда все это : “button, root_x, root_y, timestamp” взять? у меня опыт c gtk да и вобще с gui не большой)
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.
Отредактировано (Ноя. 21, 2008 01:13:00)
Офлайн
Привет.
Я нашел у себя в SUSE примерчик DragDropDemo.py и к нему dndpixmap.py ( образы открытой и закрытой корзины
- Trash). Если хотите могу переслать. Но там непросто все(имхо) :)
Офлайн
да этот примерчик есть я собственно им и пользуюсь, но там нет ничего насчет того, чтобы перемешать окна, в принципе да через драг энд дроп по всей видимости можно это сделать т.е как только наступает событие захвата надо отслеживать положения курсора и соответственно двигать окно по этим координатам, но это кажется слишком сложным решением чтобы было правдой. Мне думается способ перемещения окна должен был предусмотрен в самом виджете.
что это за функция gtk.Window.begin_move_drag ? не она ли
Отредактировано (Ноя. 21, 2008 11:40:59)
Офлайн