In this video we’ll build a Magic 8-Ball app with Tkinter and Python.
We’ll use customTkinter to make this modern looking Magic 8-Ball app.
We’ll be able to shake the 8-Ball and get a random answer from a Python Dictionary that has all the answers.
Install CustomTkinter: https://bit.ly/3pCweUe
Python Code: 8ball.py
(Github Code)
from tkinter import *
import customtkinter
from PIL import Image, ImageTk
import random
customtkinter.set_appearance_mode("dark") # Modes: system (default), light, dark
customtkinter.set_default_color_theme("dark-blue") # Themes: blue (default), dark-blue, green
root = customtkinter.CTk()
root.title('Tkinter.com - Magic 8-Ball!')
root.iconbitmap('c:/tkinter.com/codemy.ico')
root.geometry("500x500")
# Shake The 8-Ball Function
def shake():
answers = {
"It is certain": "green",
"It is decidedly so": "green",
"Without a doubt":"green",
"Yes definitely":"green",
"You may rely on it":"green",
"As I see it, yes":"green",
"Most likely":"green",
"Outlook good":"green",
"Yes":"green",
"Signs point to yes":"green",
"Reply hazy, try again":"yellow",
"Ask again later":"yellow",
"Better not tell you now":"yellow",
"Cannot predict now":"yellow",
"Concentrate and ask again":"yellow",
"Don't count on it!":"red",
"My reply is no!":"red",
"My sources say no!":"red",
"Outlook not so good!":"red",
"Very doubtful!":"red"}
# Convert dictionary to list
answer_list = list(answers.items())
# shuffle the list
random.shuffle(answer_list)
#print(answer_list)
# Output to the screen
results.config(text=answer_list[0][0], fg=answer_list[0][1])
# Define Our Images
ball = ImageTk.PhotoImage(Image.open("images/8ball.png"))
ball_img = Label(root, image=ball, bd=0)
ball_img.pack(pady=35)
# Set Results
results = Label(root, text="", font=("Helvetica", 28), bg="#1a1a1a")
results.pack(pady=20)
# Define Our Button
my_button = customtkinter.CTkButton(master=root, text="Shake 8-Ball", width=190, height=40, compound="top", command=shake)
my_button.pack(pady=30)
root.mainloop()

Add comment