from Tkinter import *
class SimultaneousPanels(PanedWindow):
def __init__(self):
self.collectionOfPanedsWindows = {}
def create_widget(self,master, tag= '_default', **kargs):
widget = PanedWindow(master, **kargs)
self.add_conexion(widget,tag)
return widget
def add_conexion(self, widget, tag):
widget.other_paneds_windows = []
if tag in self.collectionOfPanedsWindows:
for pwindow in self.collectionOfPanedsWindows[tag]:
widget.other_paneds_windows.append(pwindow)
pwindow.other_paneds_windows.append(widget)
self.collectionOfPanedsWindows[tag].append(widget)
else:
self.collectionOfPanedsWindows[tag] = [widget]
widget.bind('<Button-1>', self.sash_mark)
widget.bind('<B1-Motion>', self.sash_dragto)
def sash_mark(self,event):
this_widget = event.widget
identity = this_widget.identify(event.x, event.y)
if len(identity) ==2:
index = identity[0]
this_widget.activedSash=index
else:
this_widget.activedSash = None
def sash_dragto(self,event):
this_widget = event.widget
activedSash = this_widget.activedSash
if activedSash != None:
for pwindow in this_widget.other_paneds_windows:
pwindow.sash_place(activedSash, event.x, event.y)
def test():
root = Tk()
root.geometry("190x350")
connectedPanels = SimultaneousPanels()
for i in range(3):
m = connectedPanels.create_widget(root, bd=1, orient=VERTICAL,sashwidth=2,sashrelief=RIDGE)
m.place(x=30,y=30+100*i)
for j in range(3):
panel= Label(m, text="panel number %s" %j)
m.add(panel)
root.mainloop()
if __name__ == '__main__':
test()
Diff to Previous Revision
--- revision 4 2014-06-04 00:51:00
+++ revision 5 2014-06-04 01:00:14
@@ -50,8 +50,6 @@
def test():
- def _print(x,y):
- print "Window: %s; Pane: %s" %(x,y)
root = Tk()
root.geometry("190x350")