コード例 #1
0
class Handle(Frame):
    def __init__(self,
                 panedwindow,
                 sash_index,
                 disallow_dragging=False,
                 on_click=None,
                 **kw):
        image = kw.pop("image", None)
        Frame.__init__(self, panedwindow, class_="Handle", **kw)

        self._sash_index = sash_index

        if image:
            self._event_area = Label(self, image=image)
            self._event_area.pack()
        else:
            self._event_area = self

        self._center = int(self._event_area.winfo_reqwidth() / 2), int(
            self._event_area.winfo_reqheight() / 2)

        if disallow_dragging:
            if on_click:
                self._event_area.bind('<Button-1>', lambda event: on_click())
        else:
            self._event_area.bind('<Button-1>', self._initiate_motion)
            self._event_area.bind('<B1-Motion>', self._on_dragging)
            self._event_area.bind('<ButtonRelease-1>', self.master._on_release)

    def _initiate_motion(self, event):
        self.master._active_sash = self._sash_index

        self._dx = event.x
        self._dy = event.y

    @property
    def sash_index(self):
        return self._sash_index

    def _on_dragging(self):
        raise NotImplementedError
コード例 #2
0
ファイル: recipe-580728.py プロジェクト: jacob-carrier/code
class Handle(Frame):
    def __init__(self, panedwindow, sash_index, disallow_dragging=False, on_click=None, **kw):
        image = kw.pop("image", None)
        Frame.__init__(self, panedwindow, class_="Handle", **kw)

        self._sash_index = sash_index
        
        if image:
            self._event_area = Label(self, image=image)
            self._event_area.pack()            
        else:
            self._event_area = self
        
        self._center = int(self._event_area.winfo_reqwidth()/2), int(self._event_area.winfo_reqheight()/2)

        if disallow_dragging:
            if on_click:
                self._event_area.bind('<Button-1>', lambda event: on_click())
        else:
            self._event_area.bind('<Button-1>', self._initiate_motion)
            self._event_area.bind('<B1-Motion>', self._on_dragging)
            self._event_area.bind('<ButtonRelease-1>', self.master._on_release)
        
        
    def _initiate_motion(self, event) :
        self.master._active_sash = self._sash_index

        self._dx = event.x
        self._dy = event.y

    @property
    def sash_index(self):
        return self._sash_index

    def _on_dragging(self):
        raise NotImplementedError