<p>这有其局限性,但仍有可能。答案就在你的错误信息中:</p>
<blockquote>
<p>RuntimeError: main thread is not in main loop</p>
</blockquote>
<p>将turtle/tkinter操作限制在主线程上。在我的线程<strong>的示例中,我的线程<strong>用于在我的线程之间进行通信</p>
<pre><code>from threading import Thread, active_count
from turtle import Turtle, Screen
import queue
import random
QUEUE_SIZE = 1 # set higher the more hardware threads you have
ACTIONS = [Turtle.forward, Turtle.right, Turtle.left]
COLORS = ['red', 'black', 'blue', 'green', 'magenta']
class MyTurtleManipulator(Thread):
def __init__(self, turtle):
super().__init__()
self.turtle = turtle
def run(self):
for _ in range(100):
actions.put((self.turtle, random.choice(ACTIONS), random.randint(1, 30)))
def process_queue():
while not actions.empty():
turtle, action, argument = actions.get()
action(turtle, argument)
if active_count() > 1:
screen.ontimer(process_queue, 100)
actions = queue.Queue(QUEUE_SIZE)
for color in COLORS:
turtle = Turtle('turtle')
turtle.color(color)
turtle.setheading(random.randint(0, 360))
MyTurtleManipulator(turtle).start()
screen = Screen()
process_queue()
screen.mainloop()
</code></pre>
<p>我将队列大小设置为1,因为我在一台只有两个线程的机器上!我很想知道在一台有更多线程和一个队列的机器上是否一切正常</p>
<p><a href="https://i.stack.imgur.com/5klOj.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/5klOj.png" alt="enter image description here"/></a></p>