Найти - Пользователи
Полная версия: Зависание Tkinter
Начало » GUI » Зависание Tkinter
1
dune10991
Подскажите, где что исправить.
Есть код для получения данных с датчика метеостанции на ардуино. С ардуино надо принять строку через com-порт и вывести температуру через окно Tk
Если увеличить root.after(10, run), скажем до 10000, то подвисаний практически нет. Но если требуется большая скорость обновления информации
 from tkinter import Tk, Label, mainloop
from time import sleep
import serial
import json
ser = serial.Serial('COM3', 115200, timeout=1.0,  xonxoff=False)
ser.write(b'1')
def datchik():
    data=ser.readline()
    if len(data)>70:
        stroka=data.decode('utf-8')
        dict = json.loads(stroka)
        label1_2.config(text = str(dict["temp"]))
        label2_2.config(text = str(dict["hum"]))
    root.after(10000, datchik)
root=Tk()
datchik()
label1_1 = Label(root, text="Температура ")
label1_2 = Label(root,text='n/d')
label1_1.grid(row=0, column=0)
label1_2.grid(row=0, column=1)
root.mainloop()
PEHDOM
Предполагаю что это изза того что timeout=1.0 (1 сек), а root.after(10, run) тоесть 0.01 сек. Но это не точно . На самм деле ХЗ что там на самом деле, но я столкнулся с той-же проблемой с ардуиной, когда помогал “ребетенку” с дипломной работой. ГУИ подвисало в самый непредсказуемый момент, могло зависнуть на второй секундке, а могло без проблем отработать от начала до конца. Посколку времени было мало, чтобы досконально разобраться, то проблему решили радикально, вынесли опрос компорта в отдельный процесс, и зависания прекратились.
dune10991
PEHDOM
Предполагаю что это изза того что timeout=1.0 (1 сек), а root.after(10, run) тоесть 0.01 сек. Но это не точно . На самм деле ХЗ что там на самом деле, но я столкнулся с той-же проблемой с ардуиной, когда помогал “ребетенку” с дипломной работой. ГУИ подвисало в самый непредсказуемый момент, могло зависнуть на второй секундке, а могло без проблем отработать от начала до конца. Посколку времени было мало, чтобы досконально разобраться, то проблему решили радикально, вынесли опрос компорта в отдельный процесс, и зависания прекратились.
Вот с выносом в отдельный процесс пока у меня сложно(( Так как только осваиваю. Пару часов сегодня читал, но пока к своему скрипту не мог приспособить
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB