From 10ead4e3a8b6d613e8823d0411e155ce43914d3b Mon Sep 17 00:00:00 2001 From: Technoduck Date: Wed, 20 Nov 2024 15:07:10 -0500 Subject: [PATCH] fixed setting pressure and save image button --- app.py | 60 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/app.py b/app.py index ec8cb3e..599591f 100644 --- a/app.py +++ b/app.py @@ -3,6 +3,7 @@ import tkintermapview import requests import skydome import math +import imageio from PIL import Image, ImageTk @@ -25,6 +26,20 @@ def printer(): environment_tk = tkinter.Tk() +class EnvButton(tkinter.Button): + def __init__(self,*args,**kwargs): + tkinter.Button.__init__(self, *args, **kwargs) + self.default_bg_color = self.cget('bg') + self['activebackground'] = 'cadetblue2' + + def switch(self): + print(self.cget('bg')) + if self.cget('bg') == self.default_bg_color: + self['bg'] = 'cadetblue1' + else: + self['bg'] = self.default_bg_color + + class renderedImageZoom: def __init__(self,root,image_window,aerosol_window): @@ -35,6 +50,8 @@ class renderedImageZoom: self.pressure = 720 self.set_sun(90) self.fisheye = False + self.curr_env = 0 + self.env_list = ["cont_clean","cont_avr","cont_poll","urban","desert","mar_clean","mar_poll","mar_tro","arctic","antarctic"] self.aerosol_window = aerosol_window # create map widget @@ -83,36 +100,51 @@ class renderedImageZoom: # #Antarctic - 11e-6 g = 0.784 - buton_cont_clean = tkinter.Button(self.aerosol_window,text="Continental Clean",command=lambda: self.env_setter(26e-6,0.709)); + +# button_list = [buton_cont_clean,buton_cont_avr,buton_cont_poll,buton_urban,buton_desert,buton_mar_clean,buton_mar_poll,button_mar_tro,button_arctic,buton_antarctic] + + def set_active(index): + + if index != self.curr_env: + button_list[index].switch() + button_list[self.curr_env].switch() + self.curr_env = index + + buton_cont_clean = EnvButton(self.aerosol_window,text="Continental Clean",command=lambda: [self.env_setter(26e-6,0.709),set_active(0)]); buton_cont_clean.grid(column=0,row=1,padx=10,pady=5) - buton_cont_avr = tkinter.Button(self.aerosol_window,text="Continental Average ",command=lambda: self.env_setter(75e-6,0.793)); + buton_cont_clean['bg'] = 'cadetblue1' + self.env_setter(26e-6,0.709) + + + buton_cont_avr = EnvButton(self.aerosol_window,text="Continental Average ",command=lambda: [self.env_setter(75e-6,0.793),set_active(1)]); buton_cont_avr.grid(column=0,row=2,padx=10,pady=5) - buton_cont_poll = tkinter.Button(self.aerosol_window,text="Continental Polluted ",command=lambda: self.env_setter(175e-6,0.698)); + buton_cont_poll = EnvButton(self.aerosol_window,text="Continental Polluted ",command=lambda:[ self.env_setter(175e-6,0.698),set_active(2)]); buton_cont_poll.grid(column=0,row=3,padx=10,pady=5) - buton_urban = tkinter.Button(self.aerosol_window,text="Urban ",command=lambda: self.env_setter(353e-6,0.689)); + buton_urban = EnvButton(self.aerosol_window,text="Urban ",command=lambda: [self.env_setter(353e-6,0.689),set_active(3)]); buton_urban.grid(column=0,row=4,padx=10,pady=5) - buton_desert = tkinter.Button(self.aerosol_window,text="Desert ",command=lambda: self.env_setter(145e-6,0.729)); + buton_desert = EnvButton(self.aerosol_window,text="Desert ",command=lambda: [self.env_setter(145e-6,0.729),set_active(4)]); buton_desert.grid(column=0,row=5,padx=10,pady=5) - buton_mar_clean = tkinter.Button(self.aerosol_window,text="Maritime Clean ",command=lambda: self.env_setter(90e-6,0.772)); + buton_mar_clean = EnvButton(self.aerosol_window,text="Maritime Clean ",command=lambda: [self.env_setter(90e-6,0.772),set_active(5)]); buton_mar_clean.grid(column=1,row=1,padx=10,pady=5) - buton_mar_poll = tkinter.Button(self.aerosol_window,text="Maritime Polluted ",command=lambda: self.env_setter(115e-6,0.756)); + buton_mar_poll = EnvButton(self.aerosol_window,text="Maritime Polluted ",command=lambda: [self.env_setter(115e-6,0.756),set_active(6)]); buton_mar_poll.grid(column=1,row=2,padx=10,pady=5) - buton_mar_tro = tkinter.Button(self.aerosol_window,text="Maritime Tropic ",command=lambda: self.env_setter(43e-6,0.774)); + buton_mar_tro = EnvButton(self.aerosol_window,text="Maritime Tropic ",command=lambda: [self.env_setter(43e-6,0.774),set_active(7)]); buton_mar_tro.grid(column=1,row=3,padx=10,pady=5) - buton_arctic = tkinter.Button(self.aerosol_window,text="Arctic ",command=lambda: self.env_setter(23e-6,0.721)); + buton_arctic = EnvButton(self.aerosol_window,text="Arctic ",command=lambda: [self.env_setter(23e-6,0.721),set_active(8)]); buton_arctic.grid(column=1,row=4,padx=10,pady=5) - buton_antarctic = tkinter.Button(self.aerosol_window,text="Antarctic ",command=lambda: self.env_setter(11e-6,0.784)); + buton_antarctic = EnvButton(self.aerosol_window,text="Antarctic ",command=lambda:[ self.env_setter(11e-6,0.784),set_active(9)]); buton_antarctic.grid(column=1,row=5,padx=10,pady=5) + button_list = [buton_cont_clean,buton_cont_avr,buton_cont_poll,buton_urban,buton_desert,buton_mar_clean,buton_mar_poll,buton_mar_tro,buton_arctic,buton_antarctic] environemnt_info_text = tkinter.Label(self.aerosol_window, text="Please enter the temperature and pressure (in C, and mmHg)") environemnt_info_text.grid(column=0,row=6,columnspan=2,pady=20,padx=10) @@ -203,8 +235,10 @@ class renderedImageZoom: zoom_out_button = tkinter.Button(self.image_window, text="Zoom Out", command=self.zoom_out) render_button = tkinter.Button(self.image_window,text="render",command=self.render) cam_fish_toggle = tkinter.Button(self.image_window,text="cam view", command=cam_toggle) + save_button = tkinter.Button(self.image_window,text="Save image",command=self.save_image) zoom_in_button.pack(side=tkinter.LEFT) zoom_out_button.pack(side=tkinter.LEFT) + save_button.pack(side=tkinter.LEFT) render_button.pack(side=tkinter.RIGHT) cam_fish_toggle.pack(side=tkinter.RIGHT) @@ -242,6 +276,8 @@ class renderedImageZoom: pressure = sorted([400,int(press),900])[1] print("pressure unrealistic, resetting to clamped value {}".format(pressure)) self.pressure = pressure + else: + self.pressure = int(press) def get_image_average(self,color,low, high): @@ -286,6 +322,10 @@ class renderedImageZoom: self.canvas.create_image(0,0, anchor="nw", image=self.tk_image) + def save_image(self): + imageio.imwrite("./sunset_t{}_p{}_env_{}_alt{}_ang{}.png".format(self.temperature,self.pressure,self.env_list[self.curr_env],self.altitude + ,math.degrees(math.acos(self.sunDir.v[1]))), self.img) + def zoom_in(self, event=None): # Increase the image size by a factor (e.g., 1.2)