Обновить виджет в Tkinter - PullRequest
       11

Обновить виджет в Tkinter

0 голосов
/ 20 ноября 2018

Я пытаюсь создать обновление моего текстового виджета в tkinter.

def affichage_update ():

    with open('archives/monitor1_loc35L.txt') as monitor1, open('archives/monitor2_loc35L.txt') as monitor2:

        s= Scrollbar(generalites)

        T= Text(generalites,bg='powder blue',width=450,height=350,font=('arial',14,'bold'))
        s.pack(side=RIGHT, fill=Y)
        T.pack(side=LEFT, fill=Y)
        s.config(command=T.yview)
        T.config(yscrollcommand=s.set)
        while True:
            line1 = monitor1.readline()
            if len(line1) == 0:
                break
            line1 = line1.strip().split()
            line2 = monitor2.readline()
            line2 = line2.strip().split()
            T.insert(END, f'{line1[0]:15}\t {line1[1]:10}\t\t {line2[1]:10}\n')
    T.after(1000, affichage_update)
affichage_update()

Я хотел бы помочь найти решение для автоматического обновления содержимого моего текстового виджета, например, каждую 1 секунду, спасибо.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

мой код такой длинный, и я его свернул: generalites - это вкладка записной книжки, поэтому я думаю, что не могу написать последнюю строку: generalites.mainloop (), потому что еще нет конца моего кода впервое изображение, я должен записать данные в labelframe добавить данные в labelframe

, и я буду получать информацию и записывать ее в текст с помощью текстовых файлов, как это изображение data in Textвиджет

0 голосов
/ 22 ноября 2018

Мой ответ должен помочь вам в двух отношениях.

  1. Чтобы показать вам, как выглядит минимальный пример.

  2. Чтобы предоставить некоторые деталио том, как использовать after().

Пожалуйста, в будущем используйте MCVE для вопросов.Вам потребуется импортировать корневое окно и минимальный объем кода, необходимый для воспроизведения проблемы.

Этот пример должен помочь:

import tkinter as tk

generalites = tk.Tk()
s = tk.Scrollbar(generalites)
T = tk.Text(generalites)
s.pack(side="right", fill="y")
T.pack(side="left", fill="y")
s.config(command=T.yview)
T.config(yscrollcommand=s.set)

def affichage_update():
    with open('archives/monitor1_loc35L.txt') as monitor1, open('archives/monitor2_loc35L.txt') as monitor2:
        while True:
            line1 = monitor1.readline()
            if len(line1) == 0:
                break
            line1 = line1.strip().split()
            line2 = monitor2.readline()
            line2 = line2.strip().split()
            T.insert("end", f'{line1[0]:15}\t {line1[1]:10}\t\t {line2[1]:10}\n')
    T.after(1000, affichage_update)

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