2015-04-03 93 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

相關問題