Python-停止在SenseHat上滚动消息

Python-停止在SenseHat上滚动消息,python,multithreading,raspberry-pi,Python,Multithreading,Raspberry Pi,所以我在树莓皮传感器上做这个骰子,如果检测到“抖动”,我希望滚动消息停止,然后显示骰子。 我尝试在线程t1上使用sys.exit,但它退出了整个程序。这是否与我制作线程的方式有关,因为出于某种原因,两个线程都有相同的id。或者你认为有更简单的方法吗? 感谢您的帮助。 谢谢 from sense_hat import SenseHat import threading as th import random import time import sys sense = SenseHat() s

所以我在树莓皮传感器上做这个骰子,如果检测到“抖动”,我希望滚动消息停止,然后显示骰子。 我尝试在线程t1上使用sys.exit,但它退出了整个程序。这是否与我制作线程的方式有关,因为出于某种原因,两个线程都有相同的id。或者你认为有更简单的方法吗? 感谢您的帮助。 谢谢

from sense_hat import SenseHat
import threading as th
import random
import time
import sys

sense = SenseHat()

sense.clear()

def show_message_nw(message) :
    global sense
    sense.show_message(message)

t1 = th.Thread
t2 = th.Thread


def message_new_thread(message):

    t1(target=show_message_nw, args=(message,)).start()
    print(th.get_ident())

message_new_thread("Shake to Roll Dice")


#define color pixels                   
r = [255, 0, 0] # red pixel
g = [0, 128, 0] # green pixel
b = [0, 0, 0] # no color pixel



# Set one to six die pattern                   
one = [
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
]

two = [
b,b,b,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,g,g,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,g,g,b,b,
b,b,b,b,g,g,b,b,
b,b,b,b,b,b,b,b,
]

three = [
r,r,b,b,b,b,b,b,
r,r,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,r,r,
b,b,b,b,b,b,r,r,
]

four = [
b,b,b,b,b,b,b,b,
b,g,g,b,b,g,g,b,
b,g,g,b,b,g,g,b,
b,b,b,b,b,b,b,b,
b,b,b,b,b,b,b,b,
b,g,g,b,b,g,g,b,
b,g,g,b,b,g,g,b,
b,b,b,b,b,b,b,b,
]

five = [
r,r,b,b,b,b,r,r,
r,r,b,b,b,b,r,r,
b,b,b,b,b,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,r,r,b,b,b,
b,b,b,b,b,b,b,b,
r,r,b,b,b,b,r,r,
r,r,b,b,b,b,r,r,
]

six = [
b,g,g,b,b,g,g,b,
b,g,g,b,b,g,g,b,
b,b,b,b,b,b,b,b,
b,g,g,b,b,g,g,b,
b,g,g,b,b,g,g,b,
b,b,b,b,b,b,b,b,
b,g,g,b,b,g,g,b,
b,g,g,b,b,g,g,b,
]

# define a die function from pattern one to six
def roll_die():
    r = random.randint(1,6) 
    if r == 1:
           sense.set_pixels(one)
    elif r == 2:
           sense.set_pixels(two)
    elif r == 3:
           sense.set_pixels(three)
    elif r == 4:
           sense.set_pixels(four)
    elif r == 5:
           sense.set_pixels(five)
    elif r == 6:
           sense.set_pixels(six)

#Use accelerometer to read the motion from senseHat
def main():
    while True:
        stop_threads = True
        x, y, z = sense.get_accelerometer_raw().values()

        x = abs(x)                
        y = abs(y)
        z = abs(z)

        if x > 1.4 or y > 1.4 or z > 1.4:
            t1(target = sys.exit(),).run()
            print(th.get_ident())
            roll_die()
            t = 0.5            
            time.sleep(t)

t2(target = main()).start()