Untitled
unknown
plain_text
2 years ago
2.9 kB
3
Indexable
# Imports import sys import tkinter as tk from tkinter import ttk from tkinter import messagebox import json # Interface root = tk.Tk() root.title("Grid") root.iconbitmap(bitmap = "paint.ico") # Subroutines def boxEnter(event): obj = event.widget obj["relief"] = "sunken" def boxLeave(event): obj = event.widget obj["relief"] = "groove" def boxClick(event): obj = event.widget obj["bg"] = colors[color_index] def colorChange(event): global color_index color_index += 1 if color_index == len(colors): color_index = 0 labelPenColor["bg"] = colors[color_index] def boxErase(event): obj = event.widget obj["bg"] = bg_default def gridSave(): fp = open("gridData.txt", "w") gridData = [] for y in range(rows): row = [] for x in range(columns): row.append(box[y][x]["bg"]) gridData.append(row) json.dump(gridData, fp) def gridLoad(): fp = open("gridData.txt", "r") gridData = json.load(fp) for y in range(rows): for x in range(columns): box[y][x]["bg"] = gridData[y][x] def gridErase(): fp = open("gridData", "w") for y in range(rows): for x in range(columns): box[y][x]["bg"] = "systemButtonFace" # Frame frameGrid = tk.Frame(root) frameGrid.grid(column = 0, row = 0) frameInfo = tk.Frame(root) frameInfo.grid(column = 1, row = 0) # Grid Editing rows = 20 columns = 20 box = [] for i in range(rows): box.append([None] * columns) colors = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet", "White", "Black"] color_index = 0 # Pen editing ## Pen Title Editing labelPenTitle= tk.Label(frameInfo) labelPenTitle["text"] = "Pen Color" labelPenTitle.grid(column = 0, row = 0) ## Pen Colour Editing labelPenColor = tk.Label(frameInfo) labelPenColor.grid(column = 0, row = 1) labelPenColor["width"] = 4 labelPenColor["height"] = 2 labelPenColor["relief"] = "groove" labelPenColor["bg"] = colors[0] # Box Generation for y in range(rows): for x in range(columns): box[y][x] = tk.Label(frameGrid) box[y][x].grid(column = x, row = y) box[y][x]["width"] = 4 box[y][x]["height"] = 2 box[y][x]["relief"] = "groove" box[y][x].bind("<Enter>", boxEnter) box[y][x].bind("<Leave>", boxLeave) box[y][x].bind("<Button-1>", boxClick) box[y][x].bind("<Button-3>", boxErase) labelPenColor.bind("<Button-1>", colorChange) bg_default = box[0][0]["bg"] # Saving feature ttk.Button(frameInfo, text = "Save", command = gridSave).grid(column = 0, row = 2) ttk.Button(frameInfo, text = "Load", command = gridLoad).grid(column = 0, row = 3) ttk.Button(frameInfo, text = "Erase All", command = gridErase).grid(column = 0, row = 4) # Call the root root.mainloop()
Editor is loading...