终端打印到tkinter GUI Label

时间:2014-07-10 15:17:47

标签: python user-interface tkinter gpio

我目前正在尝试从一个程序生成输出到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中的标签吗?

1 个答案:

答案 0 :(得分:1)

您可以编写导入此模块的tkinter程序。然后,您可以调用get_encoder_turn来计算值。要让它连续运行,请在根窗口上使用tkinter after方法每隔X毫秒调用一次该函数。

此网站上有几个使用after进行此类循环的示例。

相关问题