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