Last active
April 22, 2021 14:34
-
-
Save skeltonmod/61301da80f575fd2fd8a79438b491ef3 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tkinter as tk | |
from tkinter import ttk | |
from tkinter import DISABLED, NORMAL | |
from tkinter import messagebox | |
from PIL import ImageTk, Image | |
counter = 1 | |
class Application(tk.Frame): | |
def __init__(self, master, **kw): | |
super().__init__(master, **kw) | |
self.ingredient = [] | |
self.master = master | |
self.main_label = ttk.Label(self.master, text='Add Ingredients') | |
self.recipe_label = ttk.Label(self.master, text='Recipe Name: ') | |
self.recipe_entry = ttk.Entry(self.master, width=21) | |
self.ingredient_label = ttk.Label(self.master, text='Enter Ingredients: ') | |
self.ingredient_entry = ttk.Entry(self.master, width=21) | |
self.ingredient_list = tk.Listbox(self.master, height=11, selectmode='SINGLE') | |
self.add = ttk.Button(self.master, text='Add Ingredient', width=20, command=self.addIngredient) | |
self.delete = ttk.Button(self.master, text='Delete', width=20, command=self.delOne) | |
self.deleteAll = ttk.Button(self.master, text='Delete all', width=20, command=self.deleteAll) | |
self.exit = ttk.Button(self.master, text='Exit', width=20, command=self.bye) | |
self.pack() | |
self.create_widgets() | |
def create_widgets(self): | |
self.ingredient_label.place(x=50, y=50) | |
self.ingredient_entry.place(x=50, y=80) | |
self.add.place(x=50, y=110) | |
self.delete.place(x=50, y=140) | |
self.deleteAll.place(x=50, y=170) | |
self.exit.place(x=50, y=200) | |
self.ingredient_list.place(x=220, y=10) | |
self.recipe_label.place(x=-1, y=10) | |
self.recipe_entry.place(x=80, y=10) | |
def addIngredient(self): | |
global counter | |
word = self.ingredient_entry.get() | |
if len(word) == 0: | |
messagebox.showinfo('Empty Entry', 'Enter Ingredient name') | |
else: | |
self.ingredient.append(f"{counter}. {word}") | |
self.listUpdate() | |
counter += 1 | |
self.ingredient_entry.delete(0, 'end') | |
self.recipe_entry.config(state=DISABLED) | |
def listUpdate(self): | |
self.clearList() | |
for i in self.ingredient: | |
self.ingredient_list.insert('end', i) | |
def delOne(self): | |
global counter | |
try: | |
counter -= 1 | |
val = self.ingredient_list.get(self.ingredient_list.curselection()) | |
if counter == 1: | |
self.recipe_entry.config(state=NORMAL) | |
if val in self.ingredient: | |
self.ingredient.remove(val) | |
self.listUpdate() | |
except: | |
messagebox.showinfo('Cannot Delete', 'No Ingredient Selected') | |
def deleteAll(self): | |
global counter | |
mb = messagebox.askyesno('Delete All', 'Are you sure?') | |
if mb: | |
while len(self.ingredient) != 0: | |
self.ingredient.pop() | |
self.listUpdate() | |
counter = 1 | |
self.recipe_entry.config(state=NORMAL) | |
def clearList(self): | |
self.ingredient_list.delete(0, 'end') | |
def bye(self): | |
print(self.ingredient) | |
self.master.destroy() | |
if __name__ == "__main__": | |
root = tk.Tk() | |
root.title("Recipe Maker") | |
root.geometry("400x250+500+300") | |
icon = ImageTk.PhotoImage(Image.open("favicon.ico")) | |
root.iconphoto(False, icon) | |
app = Application(root) | |
app.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment