def __init__(self, parent): WidgetPanel.__init__(self, parent) self.parent = parent self.init_w_vertical_layout() # callbacks self.update_radio_selection.on_left_mouse_click(self.callback_update_radio_selection)
def __init__(self, primary): primary_frame = basic_widgets.Frame(primary) WidgetPanel.__init__(self, primary_frame) self.variables = AppVariables() self.init_w_horizontal_layout() primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES) self.button_panel.pack(fill=tkinter.X, expand=tkinter.NO) self.pyplot_panel.pack(expand=tkinter.YES) self.canvas_demo_image_panel.pack(expand=tkinter.YES) # bind events to callbacks here self.button_panel.fname_select.config( command=self.callback_initialize_canvas_image) self.button_panel.rect_select.config( command=self.callback_set_to_select) self.button_panel.draw_line.config(command=self.callback_draw_line) self.button_panel.draw_arrow.config(command=self.callback_draw_arrow) self.button_panel.draw_rect.config(command=self.callback_draw_rect) self.button_panel.draw_polygon.config( command=self.callback_draw_polygon) self.button_panel.draw_point.config(command=self.callback_draw_point) self.button_panel.edit.config(command=self.callback_edit) self.button_panel.color_selector.config( command=self.callback_activate_color_selector) self.button_panel.remap_dropdown.on_selection(self.callback_remap) self.canvas_demo_image_panel.canvas.on_left_mouse_click( self.callback_handle_canvas_left_mouse_click) self.canvas_demo_image_panel.canvas.on_left_mouse_release( self.callback_handle_canvas_left_mouse_release)
def __init__(self, primary): """ Parameters ---------- primary The primary widget. """ # set the primary frame primary_frame = tkinter.Frame(primary) WidgetPanel.__init__(self, primary_frame) self.init_w_vertical_layout() # need to pack both primary frame and self, since this is the main app window. primary_frame.pack() # set up event listeners self.button_panel.single_plot.config(command=self.single_plot) self.button_panel.multi_plot.config(command=self.multi_plot) self.button_panel.animated_plot.config(command=self.animated_plot) self.pyplot_panel.set_y_margin_percent(5) self.pyplot_panel.variables.set_y_margins_per_frame = True self.single_plot() self.pyplot_panel.show_control_panel()
def __init__(self, parent): self.parent = parent WidgetPanel.__init__(self, parent) self._the_tool = tkinter.IntVar(self, value=ToolConstants.VIEW) self._the_shape = tkinter.IntVar(self, value=ShapeTypeConstants.POLYGON) self._image_save_directory = os.path.expanduser('~') self.canvas = ImageCanvas(self) self.toolbar = Toolbar(self) self.toolbar.config(relief=tkinter.RIDGE) self._set_toolbar_callbacks() # set up callbacks - sync changes from image canvas self.canvas.bind('<<CurrentToolChanged>>', self.callback_update_tool) self.canvas.bind('<<ShapeTypeChanged>>', self.callback_update_shape) self.pack() # handle the appearance of several toolbar labels self.toolbar.tool_label.configure(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT) self.toolbar.shape_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT) self.toolbar.remap_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT) self.toolbar.select_index_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE, justify=tkinter.RIGHT) self.toolbar.pack(side='top', expand=tkinter.NO, fill=tkinter.BOTH) self.canvas.pack(side='bottom', fill=tkinter.BOTH, expand=1) self.set_max_canvas_size(1920, 1080)
def __init__(self, primary): primary_frame = tkinter.Frame(primary) WidgetPanel.__init__(self, primary_frame) self.init_w_horizontal_layout() primary_frame.pack()
def __init__(self, primary): self.primary = primary primary_frame = basic_widgets.Frame(primary) WidgetPanel.__init__(self, primary_frame) self.init_w_horizontal_layout() lat = 35.05452800184999 lon = -106.59258099877832 collect_start = numpy.datetime64('2016-09-21T16:41:07.000000') collect_duration = 14.47132 collector_name = 'Sandia FARAD X-band' core_name = '0508C01_PS0009_CC000000_N03_M1_PC054036_HH_wfcc_sv' azimuth = 241.15240495122976 graze = 28.403774480669846 layover = 263.96070589564016 shadow = -90.0 multipath = 66.5880303387554 side_of_track = 'R' col_impulse_response_width = 0.1903215223097113 row_impulse_response_width = 0.1606955380577428 grid_column_sample_spacing = 0.04462 grid_row_sample_spacing = 0.03767 image_plane = 'SLANT' tx_rf_bandwidth = 2843.7592056795997 rniirs = None polarization = 'H:H' data_container = MetaIconDataContainer(lat=lat, lon=lon, collect_start=collect_start, collect_duration=collect_duration, collector_name=collector_name, core_name=core_name, azimuth=azimuth, graze=graze, layover=layover, shadow=shadow, multipath=multipath, side_of_track=side_of_track, col_impulse_response_width=col_impulse_response_width, row_impulse_response_width=row_impulse_response_width, grid_column_sample_spacing=grid_column_sample_spacing, grid_row_sample_spacing=grid_row_sample_spacing, image_plane=image_plane, tx_rf_bandwidth=tx_rf_bandwidth, rniirs=rniirs, polarization=polarization, ) self.metaicon_popup_panel = tkinter.Toplevel(self.primary) self.metaicon = MetaIcon(self.metaicon_popup_panel) self.metaicon.create_from_metaicon_data_container(data_container) # hide the main window so just the metaicon popup is showing self.primary.withdraw() # quit the program when the user closes the metaicon popup self.metaicon_popup_panel.protocol("WM_DELETE_WINDOW", self.primary.quit)
def __init__(self, primary): primary_frame = tkinter.Frame(primary) WidgetPanel.__init__(self, primary_frame) self.init_w_horizontal_layout() primary_frame.pack() self.panel_1.press_all_buttons() self.panel_1.unpress_all_buttons()
def __init__(self, parent): WidgetPanel.__init__(self, parent) self.init_w_box_layout(2, column_widths=20) self.remap_dropdown.update_combobox_values([ "density", "brighter", "darker", "high contrast", "linear", "log", "pedf", "nrl" ])
def __init__(self, parent): """ Parameters ---------- parent : tkinter.Toplevel """ WidgetPanel.__init__(self, parent) self.init_w_rows()
def __init__(self, primary): """ Parameters ---------- primary : tkinter.Toplevel|tkinter.Tk """ self.root = primary self.primary_frame = basic_widgets.Frame(primary) WidgetPanel.__init__(self, self.primary_frame) WidgetWithMetadata.__init__(self, primary) self.image_panel = ImagePanel(self.primary_frame) # type: ImagePanel self.side_panel = SidePanel(self.primary_frame) # type: SidePanel self.variables = AppVariables() self.set_title() self.image_panel.pack(side=tkinter.LEFT, fill=tkinter.BOTH, expand=tkinter.TRUE) self.side_panel.pack(expand=tkinter.FALSE) self.primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES) # set up event listeners self.side_panel.buttons.line_draw.config(command=self.arrow_draw_command) self.side_panel.buttons.point_draw.config(command=self.draw_point_command) self.image_panel.canvas.variables.state.line_width = self.variables.line_width # hide unnecessary tools self.image_panel.hide_tools(['shape_drawing', 'select']) self.image_panel.hide_shapes() # define menus menubar = tkinter.Menu() # file menu filemenu = tkinter.Menu(menubar, tearoff=0) filemenu.add_command(label="Open Image", command=self.callback_select_files) filemenu.add_command(label="Open Directory", command=self.callback_select_directory) filemenu.add_separator() filemenu.add_command(label="Exit", command=self.exit) # menus for informational popups popups_menu = tkinter.Menu(menubar, tearoff=0) popups_menu.add_command(label="Metaicon", command=self.metaicon_popup) popups_menu.add_command(label="Metaviewer", command=self.metaviewer_popup) # ensure menus cascade menubar.add_cascade(label="File", menu=filemenu) menubar.add_cascade(label="Metadata", menu=popups_menu) # handle packing primary.config(menu=menubar) # bind useful events from our canvas self.image_panel.canvas.bind('<<ImageIndexChanged>>', self.callback_index_changed) # has the effect of refreshing the canvas self.image_panel.canvas.bind('<<ShapeCoordsFinalized>>', self.callback_shape_edited) # has the effect that the shape is finished drawing (i.e. changed) self.image_panel.canvas.bind('<<ShapeCoordsEdit>>', self.callback_shape_edited) # has the effect that the shape is edited self.image_panel.canvas.bind('<<ShapeCreate>>', self.callback_shape_create) # has the effect that a new shape is created self.image_panel.canvas.bind('<<ShapeDelete>>', self.callback_shape_delete) # has the effect that a shape is deleted
def __init__(self, parent): """ Parameters ---------- parent The parent widget. """ WidgetPanel.__init__(self, parent) self.init_w_horizontal_layout()
def __init__(self, parent): """ Parameters ---------- parent The parent widget. """ WidgetPanel.__init__(self, parent) self.init_w_box_layout(n_columns=2, column_widths=10)
def __init__(self, parent): WidgetPanel.__init__(self, parent) self.init_w_box_layout(n_columns=2, column_widths=[20, 10], row_heights=5) self.canvas_distance_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE) self.pixel_distance_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE) self.geo_distance_label.config(anchor=tkinter.CENTER, relief=tkinter.RIDGE) self.canvas_distance_val.config(state='disabled') self.pixel_distance_val.config(state='disabled') self.geo_distance_val.config(state='disabled')
def __init__(self, primary): self.rect_id = None self.line_id = None self.arrow_id = None self.point_id = None self.polygon_id = None self.n_shapes = 0 self.primary = primary primary_frame = tkinter.Frame(primary) WidgetPanel.__init__(self, primary_frame) self.init_w_horizontal_layout() self.image_panel.image_frame.set_canvas_size(800, 600) self.image_panel.resizeable = True image_npix_x = 1200 image_npix_y = 500 image_data = numpy.random.random((image_npix_y, image_npix_x)) image_data = image_data * 255 image_reader = NumpyImageReader(image_data) self.image_panel.set_image_reader(image_reader) self.drag_xlim_1 = image_npix_x * 0.25 self.drag_xlim_2 = image_npix_x * 0.75 self.drag_ylim_1 = image_npix_y * 0.1 self.drag_ylim_2 = image_npix_y * 0.9 self.image_panel.current_tool = ToolConstants.PAN_TOOL self.image_panel.axes_canvas.image_x_min_val = 500 self.image_panel.axes_canvas.image_x_max_val = 1200 self.image_panel.axes_canvas.image_y_min_val = 5000 self.image_panel.axes_canvas.image_y_max_val = 2000 primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES) self.image_panel.canvas.set_canvas_size(800, 800) self.button_panel.draw_rect.on_left_mouse_click(self.callback_draw_rect) self.button_panel.draw_line.on_left_mouse_click(self.callback_draw_line) self.button_panel.draw_arrow.on_left_mouse_click(self.callback_draw_arrow) self.button_panel.draw_point.on_left_mouse_click(self.callback_draw_point) self.button_panel.draw_polygon.on_left_mouse_click(self.callback_draw_polygon) self.button_panel.edit_shape.on_left_mouse_click(self.callback_edit_shape) self.image_panel.canvas.on_left_mouse_release(self.callback_on_left_mouse_release)
def __init__(self, parent): WidgetPanel.__init__(self, parent) self.variables = AppVariables() self.init_w_vertical_layout() self.pack(fill=tkinter.BOTH, expand=tkinter.YES) self.toolbar.left_margin.config(width=5) self.toolbar.right_margin.config(width=5) self.toolbar.top_margin.config(width=5) self.toolbar.bottom_margin.config(width=5) self.toolbar.left_margin_label.master.forget() self.toolbar.title_label.master.forget() # set up callbacks self.toolbar.save_canvas.on_left_mouse_click(self.callback_save_canvas) self.toolbar.save_image.on_left_mouse_click(self.callback_save_image) self.toolbar.left_margin.on_enter_or_return_key( self.callback_update_axes) self.toolbar.right_margin.on_enter_or_return_key( self.callback_update_axes) self.toolbar.top_margin.on_enter_or_return_key( self.callback_update_axes) self.toolbar.bottom_margin.on_enter_or_return_key( self.callback_update_axes) self.toolbar.title.on_enter_or_return_key(self.callback_update_axes) self.toolbar.x.on_enter_or_return_key(self.callback_update_axes) self.toolbar.y.on_enter_or_return_key(self.callback_update_axes) self.toolbar.zoom_in.on_left_mouse_click(self.callback_set_to_zoom_in) self.toolbar.zoom_out.on_left_mouse_click( self.callback_set_to_zoom_out) self.toolbar.pan.on_left_mouse_click(self.callback_set_to_pan) self.toolbar.margins_checkbox.config( command=self.callback_hide_show_margins) self.toolbar.axes_labels_checkbox.config( command=self.callback_hide_show_axes_controls) self.toolbar.pack(expand=tkinter.YES, fill=tkinter.X) self.canvas = self.image_frame.outer_canvas.canvas self.axes_canvas = self.image_frame.outer_canvas
def __init__(self, primary): self.root = primary self.primary_frame = basic_widgets.Frame(primary) self.variables = AppVariables() WidgetPanel.__init__(self, self.primary_frame) WidgetWithMetadata.__init__(self, primary) self.init_w_horizontal_layout() self.set_title() # define menus menubar = tkinter.Menu() # file menu filemenu = tkinter.Menu(menubar, tearoff=0) filemenu.add_command(label="Open Image", command=self.callback_select_files) filemenu.add_command(label="Open Directory", command=self.callback_select_directory) filemenu.add_separator() filemenu.add_command(label="Exit", command=self.exit) # menus for informational popups popups_menu = tkinter.Menu(menubar, tearoff=0) popups_menu.add_command(label="Weight Plots", command=self.create_weights_plot) popups_menu.add_command(label="Metaicon", command=self.metaicon_popup) popups_menu.add_command(label="Metaviewer", command=self.metaviewer_popup) # ensure menus cascade menubar.add_cascade(label="File", menu=filemenu) menubar.add_cascade(label="Metadata", menu=popups_menu) # handle packing self.primary_frame.pack(fill=tkinter.BOTH, expand=tkinter.YES) primary.config(menu=menubar) # hide extraneous tool elements self.row_centered_image_panel.hide_tools(['shape_drawing', 'select']) self.row_centered_image_panel.hide_shapes() self.row_centered_image_panel.hide_select_index() self.column_centered_image_panel.hide_tools( ['shape_drawing', 'select']) self.column_centered_image_panel.hide_shapes() self.column_centered_image_panel.hide_select_index()
def __init__(self, parent): """ Parameters ---------- parent The parent widget. """ WidgetPanel.__init__(self, parent) tkinter.LabelFrame.__init__(self, parent) self.config(borderwidth=0) self.fname = None self.init_w_horizontal_layout() self.fname_filters = [('All files', '*')] # in practice this would be overridden if the user wants more things to happen after selecting a file. self.select_file.on_left_mouse_click(self.event_select_file) self.initialdir = os.path.expanduser("~") self.fname_label.config(state='disabled')
def __init__(self, primary): self.primary = primary WidgetPanel.__init__(self, primary) self.init_w_vertical_layout()
def __init__(self, root): """ Parameters ---------- root : tkinter.Toplevel|tkinter.Tk """ self.root = root self.browse_directory = os.path.expanduser('~') self._file_name = None self.label_schema = LabelSchema() # type: LabelSchema self._new_file = None self._unsaved_edits = None self.primary = basic_widgets.Frame(root) WidgetPanel.__init__(self, self.primary) self.init_w_rows() # self.init_w_basic_widget_list(7, [2, 2, 2, 2, 2, 2, 1]) # modify packing so that the viewer gets the extra space self.version_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X) self.version_date_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X) self.classification_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X) self.confidence_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X) self.geometries_label.master.pack(expand=tkinter.FALSE, fill=tkinter.X) self.edit_button.master.pack(expand=tkinter.FALSE, fill=tkinter.X) self.move_up_button.master.pack(expand=tkinter.FALSE, fill=tkinter.X) self.schema_viewer.master.pack(expand=tkinter.TRUE, side=tkinter.BOTTOM) # setup the appearance of labels self.version_label.config(relief=tkinter.RIDGE, justify=tkinter.LEFT, padding=5) self.version_date_label.config(relief=tkinter.RIDGE, justify=tkinter.LEFT, padding=5) self.classification_label.config(relief=tkinter.RIDGE, justify=tkinter.LEFT, padding=5) self.confidence_label.config(relief=tkinter.RIDGE, justify=tkinter.LEFT, padding=5) self.geometries_label.config(relief=tkinter.RIDGE, justify=tkinter.LEFT, padding=5) # setup the GUI callbacks and appearance of labels self.version_entry.config(state='disabled', validate='focusout', validatecommand=self._version_entry_validate) self.version_date_entry.config(state='disabled') self.classification_entry.config( state='disabled', validate='focusout', validatecommand=self._classification_validate) self.confidence_entry.config(state='disabled', validate='focusout', validatecommand=self._confidence_validate) self.geometries_entry.config(state='disabled') self.edit_button.config(command=self.edit_entry) self.new_button.config(command=self.new_entry) self.delete_button.config(command=self.delete_entry) self.move_up_button.config(command=self.move_up) self.move_down_button.config(command=self.move_down) # set up the menu bar menu = tkinter.Menu() filemenu = tkinter.Menu(menu, tearoff=0) filemenu.add_command(label="New Schema", command=self.new_schema) filemenu.add_command(label="Open Schema", command=self.open_schema) filemenu.add_command(label="Save", command=self.save) filemenu.add_separator() filemenu.add_command(label="Exit", command=self.exit) menu.add_cascade(label="File", menu=filemenu) self.primary.pack(expand=tkinter.YES, fill=tkinter.BOTH) root.config(menu=menu)
def __init__(self, parent): WidgetPanel.__init__(self, parent) self.init_w_vertical_layout()
def __init__(self, parent): WidgetPanel.__init__(self, parent) self.init_w_box_layout(1, column_widths=8, row_heights=5)
def __init__(self, parent): WidgetPanel.__init__(self, parent) self.init_w_rows()
def __init__(self, parent, ): WidgetPanel.__init__(self, parent) self.init_w_vertical_layout() self.pack(fill=tkinter.BOTH, expand=1)