环境:fedora25
问题:由于未开启桌面管理器,pygtk窗口无法拖拽。
解决方案:在窗口增加鼠标监听事件,计算鼠标位移距离,移动窗口
import gtk
class DragWindow(gtk.Window):
def __init__(self):
super(DragWindow, self).__init__(gtk.WINDOW_TOPLEVEL)
# 窗口置顶
self.set_keep_above(True)
# 设置模态框模式
self.set_modal(True)
# 取消窗口装饰
self.set_decorated(False)
# 设置窗口事件
self.set_events(gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.BUTTON_PRESS_MASK |
gtk.gdk.POINTER_MOTION_MASK | gtk.gdk.POINTER_MOTION_HINT_MASK)
# 注册窗口回调函数
self.connect('button-release-event', self.on_release) # 鼠标释放
self.connect('button-press-event', self.on_press) # 鼠标按下
self.connect('motion-notify-event', self.on_move) #鼠标移动
# 全局鼠标状态
self.is_press = False
# 鼠标按下坐标
self.start_x = 0
self.s