2015-04-03 67 views

回答

0

如果您使用的Tkinter与turtle.RawTurtle(canvas),您可以访问所有的Tkinter的职能,RawTurtle需要canvas作为一个参数,它是一个Tkinter的Canvas对象。在这种情况下,您可以创建一个新的tkinter.Toplevel,您可以在其上创建一个画布,您可以使用RawTurtle。事情是这样的:

import turtle, random, time 
from Tkinter import * 
tk = Toplevel() 
screen = Canvas(tk, width=500, height=500) 
screen.pack() 

t = turtle.RawTurtle(screen) 

t.speed(0) 
t.hideturtle() 

def spiral(len, angle): 
    for current in range(1, int(len)): 
     thetext = 'Currently turning '+str(a)+' degrees, then moving '+str(current)+' pixels' 
     textitem = screen.create_text(-250, -250, text=thetext, anchor='nw', font=('Purisa', 12)) 
     t.forward(current) 
     t.left(int(angle)) 
     screen.delete(textitem) 
    t.up() 
    t.goto(0, 0) 
    t.down() 


a, b = random.randint(-360, 360), 100 
t.clear() 
spiral(b, a) 
tk.destroy() 

print 'Still running' 
time.sleep(1) 
print 'Still running' 

new = Toplevel() 

newscreen = Canvas(new, width=500, height=500) 
newscreen.pack() 

t2 = turtle.RawTurtle(newscreen) 
t2.fd(10) 

正如你所看到的,与RawTurtle,我们可以创建和销毁Tkinter的窗户,含有龟窗户功能的画布。正如第一个窗口中所展示的那样,另一个优点是您可以创建文本,例如您可以在tkinter画布上创建文本。这段代码适用于python 2.7,它可能需要一些小的修改才能在python 3中工作,我不知道。无论如何,在这个例子中,我们随意创建并销毁了龟窗。该计划的主要部分是

tk = Toplevel() 
screen = Canvas(tk, width=500, height=500) 
screen.pack() 

t = turtle.RawTurtle(screen) 

它创建一个新的龟窗口,与t像乌龟一样,和

tk.destroy() 

这将杀死海龟窗口无需停止程序。希望这可以帮助!

+0

从您的问题中不清楚您是否希望重新打开的窗口具有相同的内容。这个例子不会那样做,那会更复杂。 – 2015-04-04 00:27:51

+0

我知道你发布这张专辑已经很长时间了,但我可以问为什么会有另一个窗口在画布旁边打开,我该如何解决这个问题? – Sank6 2017-05-30 17:33:07

+0

@ Sank6你是指另一个窗口是什么意思? – 2017-05-30 17:34:09

相关问题