1from Tkinter import * 2 3# This example program creates a scrolling canvas, and demonstrates 4# how to tie scrollbars and canvases together. The mechanism 5# is analogus for listboxes and other widgets with 6# "xscroll" and "yscroll" configuration options. 7 8class Test(Frame): 9 def printit(self): 10 print "hi" 11 12 def createWidgets(self): 13 self.question = Label(self, text="Can Find The BLUE Square??????") 14 self.question.pack() 15 16 self.QUIT = Button(self, text='QUIT', background='red', 17 height=3, command=self.quit) 18 self.QUIT.pack(side=BOTTOM, fill=BOTH) 19 spacer = Frame(self, height="0.25i") 20 spacer.pack(side=BOTTOM) 21 22 # notice that the scroll region (20" x 20") is larger than 23 # displayed size of the widget (5" x 5") 24 self.draw = Canvas(self, width="5i", height="5i", 25 background="white", 26 scrollregion=(0, 0, "20i", "20i")) 27 28 self.draw.scrollX = Scrollbar(self, orient=HORIZONTAL) 29 self.draw.scrollY = Scrollbar(self, orient=VERTICAL) 30 31 # now tie the three together. This is standard boilerplate text 32 self.draw['xscrollcommand'] = self.draw.scrollX.set 33 self.draw['yscrollcommand'] = self.draw.scrollY.set 34 self.draw.scrollX['command'] = self.draw.xview 35 self.draw.scrollY['command'] = self.draw.yview 36 37 # draw something. Note that the first square 38 # is visible, but you need to scroll to see the second one. 39 self.draw.create_rectangle(0, 0, "3.5i", "3.5i", fill="black") 40 self.draw.create_rectangle("10i", "10i", "13.5i", "13.5i", fill="blue") 41 42 # pack 'em up 43 self.draw.scrollX.pack(side=BOTTOM, fill=X) 44 self.draw.scrollY.pack(side=RIGHT, fill=Y) 45 self.draw.pack(side=LEFT) 46 47 48 def scrollCanvasX(self, *args): 49 print "scrolling", args 50 print self.draw.scrollX.get() 51 52 53 def __init__(self, master=None): 54 Frame.__init__(self, master) 55 Pack.config(self) 56 self.createWidgets() 57 58test = Test() 59 60test.mainloop() 61