DEV Community

Palak Hirave
Palak Hirave

Posted on

Day 31 : Flash Card Project

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()
Enter fullscreen mode Exit fullscreen mode

Top comments (0)