windows - 如何组合 Tkinter 窗口?

标签 windows python-2.7 tkinter turtle-graphics

我有两组代码,第一部分是 turtle 图形窗口,第二部分是 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()

非常感谢;)

最佳答案

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

这是一个例子(基本上我也用无限重新安排代替了无限循环):

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()

关于windows - 如何组合 Tkinter 窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14514524/

相关文章:

windows - 在窗口 Kiosk 模式下运行 Chrome

windows - 如何在不打开其他命令提示符的情况下从批处理文件调用 VbScript

C++:控制台窗口有奇怪的边框..?

c - 质数元素的合并排序?

python - 如何在 tkinter python 中动态添加多行文本?

c++ - 如何缩短命令行命令?

python-2.7 - 使用 matplotlib.image 从文件夹中读取图像

python - 使用 zipfile.ZipFile 即时打开 urllib2.urlopen() 的响应

python - 是否可以为列表框小部件中的特定项目着色?

Python-tkinter组合框保存值