Изменить размер окна без полей с помощью vpaned в python+gtk3
Я хочу изменить размер окна без полей с помощью панорамированного (разделительного) объекта. Если вы знаете, что терминальное приложение guake делает это с помощью motion-notify-event
вот код:
self.resizer.connect('motion-notify-event', self.on_resizer_drag)
def on_resizer_drag(self, widget, event):
"""Method that handles the resize drag. It does not actuall
moves the main window. It just set the new window size in
gconf.
"""
(x, y), mod = event.device.get_state(widget.window)
if not 'GDK_BUTTON1_MASK' in mod.value_names:
return
max_height = self.window.get_screen().get_height()
percent = y / (max_height / 100)
if percent < 1:
percent = 1
self.client.set_int(KEY('/general/window_height'), int(percent))
Resizer является панорамируемым объектом, но этот код использует pygtk (gtk2). Я использую python-gobject с gtk3. Метод event.device.get_state (window) устарел или изменен. Это не работа для меня, какой-либо совет или решение по поводу изменения размера окна без полей с перетаскиванием объекта?
1 ответ
Решение
Я реализовал код Guake для Gtk3 самостоятельно.
при первом подключении события уведомления о движении, изменение размера объекта является панорамированием.
self.resizer.connect('motion-notify-event', self.on_resize)
следующая запись изменить размер события
def on_resize(self, widget, event):
if Gdk.ModifierType.BUTTON1_MASK & event.get_state() != 0:
mouse_y = event.device.get_position()[2]
new_height = mouse_y - self.get_position()[1]
if new_height > 0:
self.resize(self.get_allocation().width, new_height)
self.show()
Теперь вы можете расширить свое окно с желобом.