J’ai deux groupes de codes et la première partie est une fenêtre graphique de tortue et la seconde partie est une fenêtre Tkinter. Comment dois-je assembler ces deux parties en une seule fenêtre?
Ma première partie du code
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()
Deuxième partie
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()
Merci beaucoup 😉
Euh, je ne sais pas si les mélanger est une bonne idée. Ce module turtle
utilise fréquemment la commande de update
de Tcl, et cela causera très probablement des problèmes lorsque du code plus compliqué est ajouté dans le mixage (il est bon que apparemment la turtle
puisse vivre avec). Quoi qu’il en soit, une façon de mélanger les deux est d’utiliser RawTurtle
à la place de Turtle
, pour que vous puissiez transmettre votre propre Canvas
que la turtle
adaptera à ses besoins.
Voici un exemple (j’ai aussi remplacé la boucle infinie par un re-planning infini, essentiellement):
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()