Живые этикетки Tkinter

У меня есть вопрос относительно меток tkinter и pymodbus. Сценарий таков: я пытаюсь создать графический интерфейс, посредством которого программа подключается к «последовательному клиенту» или «ведомому» устройству и, по сути, опрашивает регистры последовательных клиентов. Я пытаюсь прочитать эти регистры и отобразить их на метке tkinter, что мне удалось сделать! Тем не менее, я хотел бы развить эту концепцию и обновлять метки каждую секунду. Рассматриваемые регистры являются датчиками, поэтому я хотел бы зафиксировать их по мере их изменения и отобразить в графическом интерфейсе. Пока это упрощенная версия того, что уже сделано.

from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from pymodbus.client.sync import ModbusSerialClient

client = ModbusSerialClient(
    port = "COM14",
    startbit=1,
    databits=8,
    parity = "N",
    stopbits=2,
    errorcheck = "crc",
    baudrate=38400,
    method = "RTU",
    timeout=3)

root = Tk()
root.geometry("500x350")

res = client.read_holding_registers(address=50, count=1, unit=1)

value_1 = DoubleVar()
value_1.set(res.registers)

value_label = ttk.Label(root, textvariable = value_1, font = ("Arial", 25, "bold"))
value_label.place(x = 50, y = 50)

root.mainloop()

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

Заранее спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать .after() для выполнения функции для опроса регистра каждую секунду:

...
value_1 = DoubleVar()
value_label = ttk.Label(root, textvariable=value_1, font=("Arial", 25, "bold"))
value_label.place(x=50, y=50)

def poll_register():
    res = client.read_holding_registers(address=50, count=1, unit=1)
    value_1.set(res.registers)
    # call poll_register() again one second later
    root.after(1000, poll_register) 

poll_register() # start polling register
...

Другие вопросы по теме