Обновить значение метки tkinter с последовательного входа - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в python GUI. Я попытался отобразить значение моего датчика (потенциометра) от Arduino до Python, используя метку от tkinter. Я хочу, чтобы текст метки обновлялся каждую секунду.

Сначала я не могу обновить метку, но когда я печатаю значение датчика в консоль, он работает нормально.

Но когда мне удалось обновить текст моей метки, значение метки просто отображает постоянное значение, даже если я изменяю значение датчика.

Мне нужна помощь, чтобы решить эту проблему, я что-то не так сделал?

import serial
import tkinter as tk
from tkinter import *

Arduino = serial.Serial('COM4', baudrate=9600)
Arduino.flushInput()
root = tk.Tk()
root.geometry("320x200")

value = StringVar()
label_1 = Label(root, textvariable = value)
label_1.pack()

def measure():
    data = Arduino.readline()
    value.set(data)
    print(data)
    root.after(1000, measure())

measure()
root.mainloop()

Я понял, когда я вызываю функцию в root .after (1000, measure ()), я получу правильное значение, но окно GUI не будет открыто, и это сообщение об ошибке:

если нет win32.ClearCommError (self._port_handle, ctypes.byref (flags), ctypes.byref (comstat)): ctypes.ArgumentError: аргумент 2:: максимальная глубина рекурсии превышена при > вызывая Python объект

Но когда я только пишу, вызываю имя функции, не используя () в root .after (1000, measure), открывается окно GUI и обновление метки, но значение не обновлено ng правильно.

Любое предложение, что я могу сделать, чтобы это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...