Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 6, 2019 01:12:41

Artyom_N
Зарегистрирован: 2019-10-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Циклическое обновление Label

Здравствуйте, хочу сделать окошко, которое через заданный промежуток времени выводит новую строку из текстового файла. Файл это просто англо-русский словарь. Пытаюсь запрограммировать этот процесс используя цикл, но программа не работает. Дело осложняется тем, что примеры в интернете относятся к старым версиям Питона и толком не помогают. Подскажите, пожалуйста, каким образом проще всего это сделать? У меня версия Питона 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()

Офлайн

#2 Окт. 6, 2019 08:04:27

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Циклическое обновление Label

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

А то как вы делаете показывает что вы не понимаете как устроены любые GUI приложения и вам надо просто взять любую книжку и прочитать. Ну например http://oez.es/wxPython%20in%20Action.pdf



Офлайн

#3 Окт. 6, 2019 13:04:13

Artyom_N
Зарегистрирован: 2019-10-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Циклическое обновление Label

Я действительно не понимаю, как устроены GUI) Но хотел бы разобраться для написания простых программ для себя. Идея с консолью хорошая, но нужно, чтобы окошко висело поверх других всегда, не скрывалось, не уверен что с консолью так получится, да и с Tк разобраться хочу. Тогда попробую спросить по другому. Какую версию Питона (выше 2-ой) легче всего будет изучить? Чтобы было много литературы и примеров? Установив самую свежую версию Питона я столкнулся с тем, что примеры программ созданные несколько лет назад просто не запускаются(( Для новичка это вызывает большие сложности. Сейчас поставил версию 3.5.1, посоветуйте книги под нее, кому не сложно.

Офлайн

#4 Окт. 6, 2019 14:34:57

panama555
Зарегистрирован: 2019-02-19
Сообщения: 175
Репутация: +  4  -
Профиль   Отправить e-mail  

Циклическое обновление Label

Вы не учли того, что каждый раз считывая строку из файла нужно обязательно её присвоить тексту в 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()

Офлайн

#5 Окт. 6, 2019 18:45:10

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Циклическое обновление Label

Artyom_N гуглите root.after()



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#6 Окт. 6, 2019 19:48:00

Artyom_N
Зарегистрирован: 2019-10-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Циклическое обновление Label

Спасибо за помощь. В итоге нашел программу секундомера и перепилил ее под словарь)) Такой код заработал для Питона 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()

Офлайн

#7 Окт. 6, 2019 20:44:51

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Циклическое обновление Label

https://ru.wikipedia.org/wiki/BBCode



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version