代码: 全选
#!/usr/bin/env python
import gtk
class TitleBar(gtk.DrawingArea):
def __init__(self,father):
gtk.DrawingArea.__init__(self)
self.motion=''
self.begin_x=''
self.begin_y=''
self.end_x=''
self.end_y=''
self.father=father
self.father_x,self.father_y=self.father.get_position()
self.set_size_request(-1,80)
self.connect('button-press-event',self.mouse_press)
self.connect('button-release-event',self.mouse_release)
self.set_events( gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK)
def mouse_press(self,widget,event):
if event.button == 1:
self.begin_x,self.begin_y = event.x,event.y
self.motion=self.connect('motion-notify-event',self.mouse_motion)
def mouse_release(self,widget,event):
self.disconnect(self.motion)
def mouse_motion(self,widget,event):
self.end_x,self.end_y = event.x,event.y
x=self.father_x + int(self.end_x - self.begin_x)
y=self.father_y + int(self.end_y - self.begin_y)
self.father.move(int(x),int(y))
self.father是drawingarea所在的窗体。目的是通过鼠标在drawingarea上拖动来拖动窗体移动。效果是可以拖动窗体移动,但是抖动的比较厉害。