Мне было скучно, поэтому вот некоторый код, который поможет вам начать:
import threading, time
import tkinter as tk
class GUI(tk.Frame):
def __init__(self):
self.root = tk.Tk()
self.root.attributes("-fullscreen", True)
self.root.bind("<Escape>", self.exit_fullscreen) # Press Esc to exit full screen mode
file_name = "./test.txt" # This is the file being read
self.value = tk.StringVar()
self.value_label = tk.Label(self.root, textvariable = self.value, font=(None, 40))
self.value_label.pack(padx = 40, pady = 40)
t = threading.Thread(target = self.read_value, args = (file_name,))
t.start()
self.root.mainloop()
def exit_fullscreen(self, e):
self.root.attributes("-fullscreen", False)
def read_value(self, file_name):
while True:
with open(file_name) as read_file:
self.value.set(read_file.read())
time.sleep(60)
GUI()
Мне легче поддерживать GUI отзывчивым при выполнении других функций с использованием многопоточности, но вот еще один способ сделатьэто без использования потоков:
import tkinter as tk
class GUI(tk.Frame):
def __init__(self):
self.root = tk.Tk()
self.root.attributes("-fullscreen", True)
self.root.bind("<Escape>", self.exit_fullscreen) # Press Esc to exit full screen mode
self.refresh_time = 60 # The refresh time in seconds
self.file_name = "./test.txt" # This is the file being read
self.value = tk.StringVar()
self.value_label = tk.Label(self.root, textvariable = self.value, font=(None, 40))
self.value_label.pack(expand = True)
# starts self.read_value with a 100ms delay to give self.root time to start
self.root.after(100, self.read_value)
self.root.mainloop()
def exit_fullscreen(self, e):
self.root.attributes("-fullscreen", False)
def read_value(self):
with open(self.file_name) as read_file:
self.value.set(read_file.read())
# calls the function again after self.refresh_time (in ms)
self.root.after(self.refresh_time * 1000, self.read_value)
GUI()