diff -r e5d963cb6afc Lib/turtledemo/__main__.py --- a/Lib/turtledemo/__main__.py Sat May 24 00:32:29 2014 +0200 +++ b/Lib/turtledemo/__main__.py Mon Jun 09 14:47:13 2014 -0700 @@ -107,74 +107,54 @@ class DemoWindow(object): - def __init__(self, filename=None): #, root=None): + def __init__(self, filename=None): self.root = root = turtle._root = Tk() root.wm_protocol("WM_DELETE_WINDOW", self._destroy) + root.grid_columnconfigure(0, weight=1) + root.grid_columnconfigure(1, minsize=90, weight=1) + root.grid_columnconfigure(2, minsize=90, weight=1) + root.grid_columnconfigure(3, minsize=90, weight=1) + root.grid_rowconfigure(1, weight=1) - ################# self.mBar = Frame(root, relief=RAISED, borderwidth=2) - self.mBar.pack(fill=X) + self.mBar.grid(row=0, columnspan=4, sticky='news') + self.mBar.grid_columnconfigure(0, weight=1) self.ExamplesBtn = self.makeLoadDemoMenu() self.OptionsBtn = self.makeHelpMenu() - self.mBar.tk_menuBar(self.ExamplesBtn, self.OptionsBtn) #, QuitBtn) + self.mBar.tk_menuBar(self.ExamplesBtn, self.OptionsBtn) root.title('Python turtle-graphics examples') - ################# - self.left_frame = left_frame = Frame(root) - self.text_frame = text_frame = Frame(left_frame) - self.vbar = vbar =Scrollbar(text_frame, name='vbar') - self.text = text = Text(text_frame, - name='text', padx=5, wrap='none', - width=45) - vbar['command'] = text.yview - vbar.pack(side=LEFT, fill=Y) - ##################### - self.hbar = hbar =Scrollbar(text_frame, name='hbar', orient=HORIZONTAL) - hbar['command'] = text.xview - hbar.pack(side=BOTTOM, fill=X) - ##################### - text['yscrollcommand'] = vbar.set - text.config(font=txtfont) - text.config(xscrollcommand=hbar.set) - text.pack(side=LEFT, fill=Y, expand=1) - ##################### - self.output_lbl = Label(left_frame, height= 1,text=" --- ", bg = "#ddf", - font = ("Arial", 16, 'normal')) - self.output_lbl.pack(side=BOTTOM, expand=0, fill=X) - ##################### - text_frame.pack(side=LEFT, fill=BOTH, expand=0) - left_frame.pack(side=LEFT, fill=BOTH, expand=0) - self.graph_frame = g_frame = Frame(root) - turtle._Screen._root = g_frame - turtle._Screen._canvas = turtle.ScrolledCanvas(g_frame, 800, 600, 1000, 800) - #xturtle.Screen._canvas.pack(expand=1, fill="both") - self.screen = _s_ = turtle.Screen() -##### - turtle.TurtleScreen.__init__(_s_, _s_._canvas) -##### - self.scanvas = _s_._canvas - #xturtle.RawTurtle.canvases = [self.scanvas] - turtle.RawTurtle.screens = [_s_] + self.output_lbl = Label(root, height= 1, text=" --- ", bg="#ddf", + font=("Arial", 16, 'normal'), borderwidth=2, + relief=RIDGE) + self.output_lbl.grid(row=2, column=0, sticky='news', padx=(0,5)) + pane = PanedWindow(orient=HORIZONTAL, sashwidth=5, + sashrelief=SUNKEN, bg='#ddd') - self.scanvas.pack(side=TOP, fill=BOTH, expand=1) + left_frame = self.makeLeftFrame(pane) + pane.add(left_frame) - self.btn_frame = btn_frame = Frame(g_frame, height=100) - self.start_btn = Button(btn_frame, text=" START ", font=btnfont, fg = "white", - disabledforeground = "#fed", command=self.startDemo) - self.start_btn.pack(side=LEFT, fill=X, expand=1) - self.stop_btn = Button(btn_frame, text=" STOP ", font=btnfont, fg = "white", - disabledforeground = "#fed", command = self.stopIt) - self.stop_btn.pack(side=LEFT, fill=X, expand=1) - self.clear_btn = Button(btn_frame, text=" CLEAR ", font=btnfont, fg = "white", - disabledforeground = "#fed", command = self.clearCanvas) - self.clear_btn.pack(side=LEFT, fill=X, expand=1) + graph_frame = self.makeGraphFrame(pane) + pane.add(graph_frame) - self.btn_frame.pack(side=TOP, fill=BOTH, expand=0) - self.graph_frame.pack(side=TOP, fill=BOTH, expand=1) + pane.grid(row=1, column=0, columnspan=4, sticky='news') - Percolator(text).insertfilter(ColorDelegator()) + self.start_btn = Button(root, text=" START ", font=btnfont, + fg="white", disabledforeground = "#fed", + command=self.startDemo) + self.stop_btn = Button(root, text=" STOP ", font=btnfont, + fg="white", disabledforeground = "#fed", + command=self.stopIt) + self.clear_btn = Button(root, text=" CLEAR ", font=btnfont, + fg="white", disabledforeground="#fed", + command = self.clearCanvas) + self.start_btn.grid(row=2, column=1, sticky='ew') + self.stop_btn.grid(row=2, column=2, sticky='ew') + self.clear_btn.grid(row=2, column=3, sticky='ew') + + Percolator(self.text).insertfilter(ColorDelegator()) self.dirty = False self.exitflag = False if filename: @@ -183,6 +163,39 @@ "Choose example from menu", "black") self.state = STARTUP + def makeGraphFrame(self, root): + self.graph_frame = g_frame = Frame(root) + turtle._Screen._root = g_frame + turtle._Screen._canvas = turtle.ScrolledCanvas(g_frame, + 800, 600, 1000, 800) + turtle._Screen._canvas._canvas['borderwidth'] = 0 + self.screen = _s_ = turtle.Screen() + turtle.TurtleScreen.__init__(_s_, _s_._canvas) + self.scanvas = _s_._canvas + turtle.RawTurtle.screens = [_s_] + self.scanvas.pack(side=RIGHT, fill=BOTH, expand=1) + return g_frame + + def makeLeftFrame(self, root): + self.left_frame = left_frame = Frame(root) + self.text_frame = text_frame = Frame(left_frame) + self.vbar = vbar = Scrollbar(text_frame, name='vbar') + self.text = text = Text(text_frame, name='text', padx=5, + wrap='none', width=45) + vbar['command'] = text.yview + vbar.pack(side=LEFT, fill=Y) + + self.hbar = hbar = Scrollbar(text_frame, name='hbar', orient=HORIZONTAL) + hbar['command'] = text.xview + hbar.pack(side=BOTTOM, fill=X) + + text['yscrollcommand'] = vbar.set + text.config(font=txtfont) + text.config(xscrollcommand=hbar.set) + text.pack(side=LEFT, fill=BOTH, expand=1) + text_frame.pack(side=LEFT, fill=BOTH, expand=1) + return left_frame + def _destroy(self): self.root.destroy() sys.exit() @@ -213,7 +226,8 @@ def makeLoadDemoMenu(self): - CmdBtn = Menubutton(self.mBar, text='Examples', underline=0, font=menufont) + CmdBtn = Menubutton(self.mBar, text='Examples', + underline=0, font=menufont) CmdBtn.pack(side=LEFT, padx="2m") CmdBtn.menu = Menu(CmdBtn) @@ -246,7 +260,6 @@ def refreshCanvas(self): if not self.dirty: return self.screen.clear() - #self.screen.mode("standard") self.dirty=False def loadfile(self, filename): @@ -304,10 +317,8 @@ self.configGUI(NORMAL, NORMAL, DISABLED, DISABLED, "STOPPED!", "red") turtle.TurtleScreen._RUNNING = False - #print "stopIT: exitflag = True" else: turtle.TurtleScreen._RUNNING = False - #print "stopIt: exitflag = False" if __name__ == '__main__': demo = DemoWindow()