Python - прекратить прокрутку сообщения в SenseHat - PullRequest
0 голосов
/ 29 марта 2020

Так что я делаю эту кость на Raspberry pi SenseHat, и я хочу, чтобы сообщение прокрутки прекратилось, если был обнаружен «тряска», а затем отобразило кость. Я пытался использовать sys.exit в потоке t1, но он выходит из всей программы. Это как-то связано с тем, как я делаю потоки, потому что оба потока по какой-то причине имеют одинаковый идентификатор. Или вы думаете, что есть более простой способ сделать это? Любая помощь приветствуется. Спасибо.

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()  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...