Найти - Пользователи
Полная версия: Циклическое обновление Label
Начало » Python для новичков » Циклическое обновление Label
1
Artyom_N
Здравствуйте, хочу сделать окошко, которое через заданный промежуток времени выводит новую строку из текстового файла. Файл это просто англо-русский словарь. Пытаюсь запрограммировать этот процесс используя цикл, но программа не работает. Дело осложняется тем, что примеры в интернете относятся к старым версиям Питона и толком не помогают. Подскажите, пожалуйста, каким образом проще всего это сделать? У меня версия Питона 3.7.4.


import tkinter as tk
import time
f= open(“Dic.txt”,“r”, encoding=“utf-16”)
content = “test”
root = tk.Tk()

label1 = tk.Label(root, text= content)
label1.pack()

i = 1
while i < 1000:
content = f.readline(i)
time.sleep(1)
i = i + 1
root.update()

root.mainloop()
f.close()
doza_and
Artyom_N
Подскажите, пожалуйста, каким образом проще всего это сделать?
Гораздо проще сделать без Tk. Будет у вас окошко - консоль и будут выводиться строки.

А то как вы делаете показывает что вы не понимаете как устроены любые GUI приложения и вам надо просто взять любую книжку и прочитать. Ну например http://oez.es/wxPython%20in%20Action.pdf
Artyom_N
Я действительно не понимаю, как устроены GUI) Но хотел бы разобраться для написания простых программ для себя. Идея с консолью хорошая, но нужно, чтобы окошко висело поверх других всегда, не скрывалось, не уверен что с консолью так получится, да и с Tк разобраться хочу. Тогда попробую спросить по другому. Какую версию Питона (выше 2-ой) легче всего будет изучить? Чтобы было много литературы и примеров? Установив самую свежую версию Питона я столкнулся с тем, что примеры программ созданные несколько лет назад просто не запускаются(( Для новичка это вызывает большие сложности. Сейчас поставил версию 3.5.1, посоветуйте книги под нее, кому не сложно.

panama555
Вы не учли того, что каждый раз считывая строку из файла нужно обязательно её присвоить тексту в Label
Вот так будет работать

 import tkinter as tk
import time
f= open("c:\\Dic.txt","r")
content = "test"
root = tk.Tk()
label1 = tk.Label(root, text= content)
label1.pack()
for ln in f:
    label1["text"]=ln
    time.sleep(1)
    root.update()
root.mainloop()
f.close()
PEHDOM
Artyom_N гуглите root.after()
Artyom_N
Спасибо за помощь. В итоге нашел программу секундомера и перепилил ее под словарь)) Такой код заработал для Питона 3.5.2, буду улучшать дальше:

from tkinter import *
f= open(“Dic.txt”,“r”, encoding=“utf-8”)
temp = 100
after_id = ‘'

def start_dic():
global temp, after_id
after_id = root.after(120000, start_dic)
content = f.readline(temp)
label1.configure(text = (content))
temp += 1

root = Tk()
root.geometry(’500x90')
root.lift()
root.attributes('-topmost',True)
root.after_idle(root.attributes,'-topmost',True)

label1 = Label(root, font=“Arial 14”, width = 70,
height = 3, anchor=W)
label1.pack()

btn = Button(root, text=“go”, command = start_dic)
btn.pack()

root.mainloop()
f.close()
AD0DE412
https://ru.wikipedia.org/wiki/BBCode
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