Goal Lors de la première utilisation du tkinter de python, j'ai créé un programme qui affiche les mots anglais dans l'ordre, alors je l'ai enregistré.
Une bibliothèque pour générer des parties d'interface graphique, etc. avec python, peut être installée avec homebrew.
brew install tcl-tk
Si vous utilisez pyenv, vous devrez peut-être désinstaller-> réinstaller la version de python que vous souhaitez utiliser après avoir fait ce qui précède.
Si vous effectuez une recherche sur Internet, vous trouverez souvent des exemples de mise en œuvre de compteurs à rebours.
Il est réalisé en changeant le nombre à l'intérieur de l'étiquette spécifiée (caractère ou partie de zone à afficher) toutes les secondes, et il devrait utiliser à peu près les algorithmes et fonctions suivants.
class Timer
def __init__(self):
-Initialisation des variables à compter
-Générer une étiquette pour afficher le numéro de la minuterie
def count_up(label):
-Afficher la valeur de la variable à compter sur l'étiquette
-Incrément de comptage
-1 seconde plus tard_up()Appeler une fonction(Récursif) ---(*)
window = tkinter.Tk() #génération de fenêtre
count_up_timer = Timer(window)
window.mainloop()
À (*), utilisez la méthode after () de tkinter. Appelez la fonction spécifiée après l'heure spécifiée avec le nom tel qu'il est.
Dans ce qui suit, le mot est affiché à la place du numéro, ou l'affichage est arrêté à un endroit spécifique.
La raison pour laquelle j'ai choisi cela comme thème d'implémentation est que j'ai utilisé une application de lecture appelée "Spritz". Cette application lit des phrases en anglais sur la page Web et les affiche mot par mot comme un calcul flash.
Cliquez ici pour Spritz D'après le résultat de la recherche, une part considérable du temps nécessaire à la lecture d'une phrase est consacrée au mouvement du point de vue, il semble que les mots sont affichés dans l'ordre en un seul endroit.
En bref, j'ai implémenté ce faux en utilisant tkiner (la famille principale a beaucoup d'idées scientifiques telles que rendre une lettre de chaque mot rouge pour faciliter la correspondance avec le point de vue). Eh bien, il peut être judicieux d'implémenter la fonction de redémarrage.
J'ai abandonné la fonction de lecture du texte sur la page Web. Je vais copier le texte dans la zone de texte. L'interface utilisateur ressemble à ceci.
Lorsque vous appuyez sur le bouton Démarrer,
Les mots de la phrase dans la zone de texte ci-dessus sont affichés un par un sous le bouton (dans l'image, «Totoro» est affiché).
Code ci-dessous
# import tkinter
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
import time
class Flash:
def __init__(self, parent, wpm, words_list, label):
# variable storing time
self.count = 0
# label displaying words
self.wpm = wpm
self.words_list = words_list
# convert wpm to display interval in ms
self.wpm_interval = int(60/self.wpm * 1000)
self.label = label
# self.label = tk.Label(parent, text="***", font="Arial 40", width=25)
self.label.pack()
def display_next_word(self):
# finish the loop when all words are displayed
if self.count > len(self.words_list)-1:
self.count = 0
self.label.destroy()
return
# display next word
self.label.configure(text="%s" % self.words_list[self.count])
# increment the count
self.count += 1
# let tkinter to call self.refresh after 1/wpm sec
self.label.after(self.wpm_interval, self.display_next_word)
if __name__ == "__main__":
# define a window
root = tk.Tk()
root.geometry("400x300")
# label for english sentences
label_text = tk.Label(root, text=u'sentences (copy and paste):')
label_text.pack()
# text box for english sentences
text = tk.Entry(root)
text.pack()
text.insert(tk.END, 'My Neighbor Totoro') # initial value
# label for wpm (word per minutes)
label_wpm = tk.Label(root, text=u'wpm \n (how many words you read/understand in 1 minutes):')
label_wpm.pack()
# text box for wpm
wpm_box = tk.Entry(root)
wpm_box.pack()
wpm_box.insert(tk.END, '250')
def start_flash():
# prepare label for displayin words one by one
label_flash_words = tk.Label(root, text="***", font="Arial 40", width=25)
# prepare sentences and wpm values
target_text = text.get()
print("the number of words : ", len(target_text.split()))
wpm_int = int(wpm_box.get())
# start flashing
flash = Flash(root, wpm = wpm_int, words_list = target_text.split(), label=label_flash_words)
flash.display_next_word()
start_btn = tk.Button(root, text='start', command=start_flash)
start_btn.pack()
root.mainloop()
La méthode after elle-même ne garantit pas une précision de temps élevée, donc si vous la souhaitez, vous devez la modifier séparément.
Outre l'utilité du programme lui-même, j'ai découvert tkinter.
Recommended Posts