Today, I built a basic flash card project.
Flash Card Project
from tkinter import *
import pandas
import random
BACKGROUND_COLOR = "#B1DDC6"
window = Tk()
window.title("Flash Card Project")
window.config(padx=50, pady=50, bg=BACKGROUND_COLOR)
canvas = Canvas(width=800, height=526, bg=BACKGROUND_COLOR, highlightthickness=0)
right_img = PhotoImage(file="./images/right.png")
wrong_img = PhotoImage(file="./images/wrong.png")
card_back_img = PhotoImage(file="./images/card_back.png")
card_front_img = PhotoImage(file="./images/card_front.png")
screen = canvas.create_image(400, 263, image=card_front_img)
canvas.grid(column=0, row=0, columnspan=2)
to_learn = {}
try:
data = pandas.read_csv("words_to_learn.csv")
except FileNotFoundError:
org_data = pandas.read_csv("./data/french_words.csv")
to_learn = org_data.to_dict(orient="records")
else:
to_learn = data.to_dict(orient="records")
def next_card():
global random_word, flip_timer
window.after_cancel(flip_timer)
random_word = random.choice(to_learn)
canvas.itemconfig(screen, image=card_front_img)
canvas.itemconfig(language_text, text="French")
canvas.itemconfig(vocab_text, text=random_word["French"])
flip_timer = window.after(3000, func=flip_card)
words_to_learn = data.to_csv("words_to_learn.csv", index=False)
def rid_value():
to_learn.remove(random_word)
list = pandas.DataFrame(to_learn)
list.to_csv("words_to_learn.csv", index=False)
next_card()
def flip_card():
canvas.itemconfig(screen, image=card_back_img)
canvas.itemconfig(language_text, text="English")
canvas.itemconfig(vocab_text, text=random_word["English"])
flip_timer = window.after(3000, func=flip_card)
right_button = Button(image=right_img, highlightthickness=0, bd=0, relief="flat",
bg=BACKGROUND_COLOR, activebackground=BACKGROUND_COLOR, command=rid_value)
right_button.grid(row=2, column=0)
wrong_button = Button(image=wrong_img, highlightthickness=0, bd=0, relief="flat",
bg=BACKGROUND_COLOR, activebackground=BACKGROUND_COLOR, command=next_card)
wrong_button.grid(row=2, column=1)
language_text = canvas.create_text(400, 150, text="Title", font=("Arial", 40, "italic"), fill="black")
vocab_text = canvas.create_text(400, 263, text="word", font=("Arial", 60, "bold"), fill="black")
next_card()
window.mainloop()
Top comments (0)