Python File Display - PullRequest
       2

Python File Display

0 голосов
/ 24 октября 2018

Я совершенно новичок в Python, поэтому не знаю с чего начать.Мое требование кажется довольно прямым.У меня есть файл в окне SCO UNIX, который содержит число, которое никогда не превышает 3 цифры.Что мне нужно, так это программа, которая будет читать этот файл и отображать число в полноэкранном режиме на мониторе с разрешением 800 x 600.Затем программе нужно поспать 60 секунд, затем снова прочитать файл и отобразить новый номер.

Заранее спасибо, Дейв

1 Ответ

0 голосов
/ 24 октября 2018

Мне было скучно, поэтому вот некоторый код, который поможет вам начать:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...