Python Forum

Full Version: Display text 3 words at a time
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,
I want to display 3 words on screen at a time from some textfile/pdf. At a specified rate (user to select time 1/100 to 300 sec).

I also want to provide a pause button( eg ENTER) and a resume button (ENTER)

f = open("demofile.txt", "r") 
for x in f: print(x) input()
 f.close()
The speed of display and the pause / resume buttons are a problem. Request for any help

thanks
Are you considering a GUI (Tkinter...) to display the words ?,
because printing will be very small for the user.
A GUI will solve that problem, and provide possibilities to select time
and proper buttons.

Paul
(May-04-2020, 03:00 PM)DPaul Wrote: [ -> ]Are you considering a GUI (Tkinter...) to display the words ?,
because printing will be very small for the user.
A GUI will solve that problem, and provide possibilities to select time
and proper buttons.

Paul

Hi Paul, Smile Thanks for the reply, Yes. Could you give it a decko ? Thanks
If this is your first GUI, i suggest someting simple:
- Find a tutorial on e.g. Tkinter, one with 'grid' positioning (not packing).
- The geometry will let you decide how big the app window will be, the next 5 items must fit in (width, height)
- Start with 3 Labels for the words
- The A Entry text box to type the duration (user)
- And on the fifth row (actually # 4) a button that says 'start'. When you press it it changes to "stop"
pressing start will validate the entered duration and start the show.
Paul
(May-10-2020, 06:31 AM)DPaul Wrote: [ -> ]If this is your first GUI, i suggest someting simple:
- Find a tutorial on e.g. Tkinter, one with 'grid' positioning (not packing).
- The geometry will let you decide how big the app window will be, the next 5 items must fit in (width, height)
- Start with 3 Labels for the words
- The A Entry text box to type the duration (user)
- And on the fifth row (actually # 4) a button that says 'start'. When you press it it changes to "stop"
pressing start will validate the entered duration and start the show.
Paul
Thank you Paul Smile
Here is an example in tkinter. I originally did this for changing background images but, modified for text.
Take a look and dissect it, You can get a basic understanding of countdown timers.
Here is an example of an alarm clock I did, if you would rather do it based on time.

#! /usr/bin/env python3

from tkinter import *
from tkinter import ttk



class Picture:
    def __init__(self, parent):
        self.parent = parent
        style = ttk.Style()
        style.configure('My.TLabel',padding=.85, borderwidth=1, relief='solid')
        self.label = ttk.Label(self.parent, style='My.TLabel')
        self.label['text'] = 'Start text here'
        self.label.pack(pady=15)

        btn = Button(self.parent, command=self.update, text='Change Text').pack(side='bottom', pady=10)

        self.lab = Label(self.parent)
        self.lab['text'] = None
        self.lab.pack(expand=True, fill='x')





    def update(self):
        self.label['text'] = 'Next Text Here'
        self.label['foreground'] = 'red'
        self.i = 8
        self.timer()

    def display(self):
        self.label['text'] = 'Last Text Here'
        self.label['foreground'] = 'green'

    def run_timer(self):
        if self.i >= 0:
            self.i -= 1

    def timer(self):
        self.run_timer()
        if self.i >= 0:
            self.myvar = self.lab.after(1000, self.timer)
            self.lab['text'] = f'Text reset in {self.i}'
            self.lab['bg'] = 'burlywood'
            self.lab['fg'] = 'firebrick'
            self.lab['font'] = 'serif 10 normal'
        else:
            self.myvar = None
            self.lab['text'] = ''
            self.lab['bg'] = 'grey86'
            self.display()



def main():
    root = Tk()

    Picture(root)
    root.mainloop()

main()