如何结合Tkinter的窗户?

我有两组代码,第一部分是乌龟graphics窗口,第二部分是一个Tkinter窗口。 我应该如何将这两个部分合并到一个窗口?

我的代码的第一部分

from turtle import * def move(thing, distance): thing.circle(250, distance) def main(): rocket = Turtle() ISS = Turtle() bgpic('space.gif') register_shape("ISSicon.gif") ISS.shape("ISSicon.gif") rocket.speed(10) ISS.speed(10) counter = 1 title("ISS") screensize(750, 750) ISS.hideturtle() rocket.hideturtle() ISS.penup() ISS.left(90) ISS.fd(250) ISS.left(90) ISS.showturtle() ISS.pendown() rocket.penup() rocket.fd(250) rocket.left(90) rocket.showturtle() rocket.pendown() rocket.fillcolor("white") while counter == 1: move(ISS, 3) move(rocket, 4) main() 

第二部分

 from Tkinter import * control=Tk() control.title("Control") control.geometry("200x550+100+50") cline0=Label(text="").pack() cline1=Label(text="Speed (km/s)").pack() control.mainloop() 

非常感谢 ;)

Solutions Collecting From Web of "如何结合Tkinter的窗户?"

呃,我不确定把它们混在一起是不是一个好主意。 这个turtle模块经常使用Tcl的update命令,当混合中添加更多涉及的代码时(很显然turtle可以忍受它),这很可能会导致问题。 无论如何,混合两者的一种方法是使用RawTurtle来代替Turtle ,所以你可以传递你自己的Canvasturtle会根据需要调整它们。

这里是一个例子(我也基本上通过无限的重新调度取代了无限循环):

 import Tkinter import turtle def run_turtles(*args): for t, d in args: t.circle(250, d) root.after_idle(run_turtles, *args) root = Tkinter.Tk() root.withdraw() frame = Tkinter.Frame(bg='black') Tkinter.Label(frame, text=u'Hello', bg='grey', fg='white').pack(fill='x') canvas = Tkinter.Canvas(frame, width=750, height=750) canvas.pack() frame.pack(fill='both', expand=True) turtle1 = turtle.RawTurtle(canvas) turtle2 = turtle.RawTurtle(canvas) turtle1.ht(); turtle1.pu() turtle1.left(90); turtle1.fd(250); turtle1.lt(90) turtle1.st(); turtle1.pd() turtle2.ht(); turtle2.pu() turtle2.fd(250); turtle2.lt(90) turtle2.st(); turtle2.pd() root.deiconify() run_turtles((turtle1, 3), (turtle2, 4)) root.mainloop()