Pedigree Chart
Jan 26, 2021 4:57:47 GMT -8
Post by Uncle Buddy on Jan 26, 2021 4:57:47 GMT -8
# pedigree_chart
import tkinter as tk
import widgets as wdg
import styles as st
import right_click_menu as rcm
from message_strings import pedigree_person_tab_msg
formats = st.make_formats_dict()
ST = st.ThemeStyles()
class PedigreeChart(wdg.Canvas):
def __init__(self, master, current_person_birthname, root, *args, **kwargs):
wdg.Canvas.__init__(self, master, *args, **kwargs)
self.master = master
self.current_person_birthname = current_person_birthname
self.root = root
self.rc_menu = rcm.RightClickMenu(self.root)
self.make_chart()
def make_chart(self):
def scroll_start(event):
self.scan_mark(event.x, event.y)
def scroll_move(event):
self.scan_dragto(event.x, event.y, gain=3)
xsb = tk.Scrollbar(
self.master,
orient="horizontal",
command=self.xview,
width=16)
ysb = tk.Scrollbar(
self.master,
orient="vertical",
command=self.yview,
width=16)
self.configure(
yscrollcommand=ysb.set, xscrollcommand=xsb.set)
self.configure(scrollregion=(0,0,1000,1000))
xsb.grid(row=1, column=0, sticky="ew")
ysb.grid(row=0, column=1, sticky="ns")
self.grid(column=0, row=0, sticky="nsew")
self.master.grid_rowconfigure(0, weight=1)
self.master.grid_columnconfigure(0, weight=1)
# mockup/placeholder till the real one comes
self.create_text(
221, 75,
text='Riccardo Saverio Grimaldo',
font=('Times', 16),
fill=formats['fg'])
self.create_line(351, 73, 377, 73,
fill=formats['fg'])
self.create_line(351, 77, 377, 77,
fill=formats['fg'])
self.create_text(
447, 75,
text='Bellissa Ricci',
font=('Times', 16),
fill=formats['fg'])
self.create_line(365, 90, 365, 115,
fill=formats['fg'])
self.create_text(
# 221, 75,
621, 75,
text='Donald Wiley Webb',
font=('Times', 16),
fill=formats['fg'])
self.create_line(715, 73, 741, 73,
fill=formats['fg'])
self.create_line(715, 77, 741, 77,
fill=formats['fg'])
self.create_text(
847, 75,
text='Maria Tabitha Mullinax',
font=('Times', 16),
fill=formats['fg'])
self.create_line(580, 102, 726, 102,
fill=formats['fg'])
self.create_line(580, 102, 580, 115,
fill=formats['fg'])
self.create_line(726, 90, 726, 103,
fill=formats['fg'])
self.create_text(
356, 125,
text='Jeremiah Laurence Grimaldo',
font=('Times', 16),
fill=formats['fg'],
tags='current_person'
)
self.create_line(486, 123, 514, 123,
fill=formats['fg'])
self.create_line(486, 127, 514, 127,
fill=formats['fg'])
self.create_text(
582, 125,
text='Ronnie Webb',
font=('Times', 16),
fill=formats['fg'])
self.create_line(500, 140, 500, 165,
fill=formats['fg'])
self.create_line(350, 165, 650, 165, fill=formats['fg'])
self.create_line(350, 165, 350, 190,
fill=formats['fg'])
self.create_line(650, 165, 650, 190,
fill=formats['fg'])
self.create_text(
350, 205,
text='Patricia Grimaldo',
font=('Times', 16),
fill=formats['fg'])
self.create_text(
650, 205,
text='Christiana Dalia Grimaldo',
font=('Times', 16),
fill=formats['fg'])
# enable panning with mouse
self.bind("<ButtonPress-1>", scroll_start)
self.bind("<B1-Motion>", scroll_move)
rcm_widgets = (self,)
rcm.make_rc_menus(
rcm_widgets,
self.rc_menu,
pedigree_person_tab_msg)
ST.config_generic(self)