Форум сайта python.su
Здравствуйте, хочу сделать окошко, которое через заданный промежуток времени выводит новую строку из текстового файла. Файл это просто англо-русский словарь. Пытаюсь запрограммировать этот процесс используя цикл, но программа не работает. Дело осложняется тем, что примеры в интернете относятся к старым версиям Питона и толком не помогают. Подскажите, пожалуйста, каким образом проще всего это сделать? У меня версия Питона 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()
Офлайн
Artyom_NГораздо проще сделать без Tk. Будет у вас окошко - консоль и будут выводиться строки.
Подскажите, пожалуйста, каким образом проще всего это сделать?
Офлайн
Я действительно не понимаю, как устроены GUI) Но хотел бы разобраться для написания простых программ для себя. Идея с консолью хорошая, но нужно, чтобы окошко висело поверх других всегда, не скрывалось, не уверен что с консолью так получится, да и с Tк разобраться хочу. Тогда попробую спросить по другому. Какую версию Питона (выше 2-ой) легче всего будет изучить? Чтобы было много литературы и примеров? Установив самую свежую версию Питона я столкнулся с тем, что примеры программ созданные несколько лет назад просто не запускаются(( Для новичка это вызывает большие сложности. Сейчас поставил версию 3.5.1, посоветуйте книги под нее, кому не сложно.
Офлайн
Вы не учли того, что каждый раз считывая строку из файла нужно обязательно её присвоить тексту в 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()
Офлайн
Artyom_N гуглите root.after()
[code python][/code]
Офлайн
Спасибо за помощь. В итоге нашел программу секундомера и перепилил ее под словарь)) Такой код заработал для Питона 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()
Офлайн
https://ru.wikipedia.org/wiki/BBCode
Офлайн