我目前正在尝试从一个程序生成输出到gui,该程序将值输出到终端,我无法弄清楚如何。
生成输出的程序如下:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
input_A = 18
input_B = 23
GPIO.setup(input_A, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(input_B, GPIO.IN, pull_up_down=GPIO.PUD_UP)
old_a = True
old_b = True
def get_encoder_turn():
# return -1, 0, or +1
global old_a, old_b
result = 0
new_a = GPIO.input(input_A)
new_b = GPIO.input(input_B)
if new_a != old_a or new_b != old_b :
if old_a == 0 and new_a == 1 :
result = (old_b * 2 - 1)
elif old_b == 0 and new_b == 1 :
result = -(old_a * 2 - 1)
old_a, old_b = new_a, new_b
time.sleep(0.001)
return result
x = 0
while True:
change = get_encoder_turn()
if change != 0 :
x = x + change
print(x)
此程序将向终端输出数字,直到程序退出。
现在我正在努力解决的问题是让输出x出现在tkinter GUI中。您可以将程序作为子进程调用并拦截输出吗?还有另一种方法可以使用x的当前值来更新GUI中的标签吗?
答案 0 :(得分:1)
您可以编写导入此模块的tkinter程序。然后,您可以调用get_encoder_turn来计算值。要让它连续运行,请在根窗口上使用tkinter after
方法每隔X毫秒调用一次该函数。
此网站上有几个使用after
进行此类循环的示例。