Source code for snowdrop.src.gui.mytable

# -*- coding: utf-8 -*-
"""
Created on Fri Jan 11 18:13:56 2019

@author: agoumilevski
"""
import numpy as np
import tkinter as tk    
from tkinter import NSEW,END,RIDGE
from tkinter import Entry 
from tkinter import messagebox
from math import ceil
    
minWidth = 600
minHeight = 300
maxWidth = 1000
maxHeight = 600
N = 0
m = {} 
data = [] 


[docs] def getValues(container,names=[],vals=[]): N = len(names) n_columns = 3 n_rows = ceil(N/n_columns) data.clear() lb = tk.Label(container) lb.grid(row=0, column=0) lb = tk.Label(container) lb.grid(row=1, column=0) lb = tk.Label(container) lb["text"] = "Date" lb.grid(row=2, column=0, sticky=NSEW) e = Entry(container,relief=RIDGE) e.grid(row=2, column=1, sticky=NSEW) e.insert(END, "2017/1/1") data.append(e) lb = tk.Label(container) lb.grid(row=3, column=0) k = 0 for i in range(n_rows): for j in range(n_columns): k += 1 if k >= N: break # Populate entry name lb = tk.Label(container) lb["text"] = names[k] lb.grid(row=i+4, column=2*j, sticky=NSEW) e = Entry(container,relief=RIDGE) e.grid(row=i+4, column=2*j+1, sticky=NSEW) e.insert(END, vals[k]) data.append(e) lb = tk.Label(container) lb.grid(row=n_rows+6, column=0) lb = tk.Label(container) lb.grid(row=n_rows+7, column=0) # Local functions def onSave(): e = data[0] dt = e.get() vals = {} for i in range(1,N): e = data[i] d = e.get().strip() name = names[i-1] if len(d) > 0: vals[name] = d else: vals[name] = np.nan m[dt] = vals messagebox.showinfo("Shocks Editor","Shocks saved.") def onClean(): m.clear() for i in range(1,N): e = data[i] e.delete(0,END) e.insert(0,"0") messagebox.showinfo("Shocks Editor","Shocks cleaned.") def onClose(): container.destroy() bt1 = tk.Button(container,text='Save',width=2,height=1,command=onSave) bt1.grid(row=10+n_rows,column=2, sticky=NSEW) bt2 = tk.Button(container,text='Clean',width=2,height=1,command=onClean) bt2.grid(row=10+n_rows,column=3, sticky=NSEW) bt3 = tk.Button(container,text='Close',width=2,height=1,command=onClose) bt3.grid(row=10+n_rows,column=4, sticky=NSEW) return
[docs] def showTable(title="Table Editor",names=[],vals=[]): m.clear() data.clear() root = tk.Tk() root.title(title) root.minsize(minWidth, minHeight) root.maxsize(maxWidth, maxHeight) getValues(container=root,names=names,vals=vals) root.mainloop() return
if __name__ == '__main__': """ Main entry point """ names=['RES_L_GDP_BAR','RES_L_GDP_GAP','RES_DL_GDP_BAR','RES_PIE','RES_PIE_TAR', 'RES_UNR_GAP','RES_UNR_BAR','RES_G_UNR_BAR','RES_CAPU_BAR','RES_DL_CU_BAR'] vals=['0']*len(names) showTable(title="Shock Editor",names=names,vals=vals) print(m)