diff --git a/Demo_Matplotlib.py b/Demo_Matplotlib.py index 36cee679..93f98a8f 100644 --- a/Demo_Matplotlib.py +++ b/Demo_Matplotlib.py @@ -1,9 +1,7 @@ import PySimpleGUI as g import matplotlib matplotlib.use('TkAgg') -from numpy import arange, sin, pi -from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, FigureCanvasAgg -from matplotlib.figure import Figure +from matplotlib.backends.backend_tkagg import FigureCanvasAgg import matplotlib.backends.tkagg as tkagg import tkinter as Tk @@ -42,22 +40,30 @@ def draw_figure(canvas, figure, loc=(0, 0)): # which must be kept live or else the picture disappears return photo -f = Figure(figsize=(5, 4), dpi=100) -a = f.add_subplot(111) -t = arange(0.0, 3.0, 0.01) -s = sin(2*pi*t) +#------------------------------- PASTE YOUR MATPLOTLIB CODE HERE ------------------------------- +import numpy as np +import matplotlib +import matplotlib.pyplot as plt -a.plot(t, s) -a.set_title('Tk embedding') -a.set_xlabel('X axis label') -a.set_ylabel('Y label') +# Fixing random state for reproducibility +np.random.seed(19680801) -# -------------------------------- GUI Starts Here -------------------------------- -canvas_elem = g.Canvas(size=(500, 400)) # get the canvas we'll be drawing on + +matplotlib.rcParams['axes.unicode_minus'] = False +fig, ax = plt.subplots() +ax.plot(10*np.random.randn(100), 10*np.random.randn(100), 'o') +ax.set_title('Using hyphen instead of Unicode minus') + +# -------------------------------- GUI Starts Here -------------------------------# +# fig = your figure you want to display. Assumption is that 'fig' holds the # +# information to display. # +# --------------------------------------------------------------------------------# +figure_x, figure_y, figure_w, figure_h = fig.bbox.bounds +canvas_elem = g.Canvas(size=(figure_w, figure_h)) # get the canvas we'll be drawing on # define the form layout layout = [[g.Text('Plot test')], [canvas_elem], - [g.OK(pad=((250,0), 3))]] + [g.OK(pad=((figure_w/2,0), 3), size=(4,2))]] # create the form and show it without the plot form = g.FlexForm('Demo Application - Embedding Matplotlib In PySimpleGUI') @@ -65,7 +71,7 @@ form.Layout(layout) form.ReadNonBlocking() # add the plot to the window -fig_photo = draw_figure(canvas_elem.TKCanvas, f) +fig_photo = draw_figure(canvas_elem.TKCanvas, fig) # show it all again and get buttons button, values = form.Read() diff --git a/PySimpleGUI.py b/PySimpleGUI.py index 7de09ce2..e371e23e 100644 --- a/PySimpleGUI.py +++ b/PySimpleGUI.py @@ -850,7 +850,7 @@ class Frame(Element): # Slider # # ---------------------------------------------------------------------- # class Slider(Element): - def __init__(self, range=(None,None), default_value=None, orientation=None, border_width=None, relief=None, scale=(None, None), size=(None, None), font=None, background_color=None, text_color=None, key=None, pad=None): + def __init__(self, range=(None,None), default_value=None, resolution=None, orientation=None, border_width=None, relief=None, scale=(None, None), size=(None, None), font=None, background_color=None, text_color=None, key=None, pad=None): ''' Slider Element :param range: @@ -869,6 +869,8 @@ class Slider(Element): self.Orientation = orientation if orientation else DEFAULT_SLIDER_ORIENTATION self.BorderWidth = border_width if border_width else DEFAULT_SLIDER_BORDER_WIDTH self.Relief = relief if relief else DEFAULT_SLIDER_RELIEF + self.Resolution = 1 if resolution is None else resolution + super().__init__(ELEM_TYPE_INPUT_SLIDER, scale=scale, size=size, font=font, background_color=background_color, text_color=text_color, key=key, pad=pad) return @@ -1084,6 +1086,9 @@ class FlexForm: if self.RootNeedsDestroying: self.TKroot.destroy() _my_windows.Decrement() + # if form was closed with X + if self.LastButtonClicked is None and self.LastKeyboardEvent is None and self.ReturnValues[0] is None: + _my_windows.Decrement() if self.LastKeyboardEvent is not None or self.LastButtonClicked is not None: return BuildResults(self, False, self) else: @@ -1805,7 +1810,7 @@ def PackFormIntoFrame(form, containing_frame, toplevel_form): else: range_from = element.Range[0] range_to = element.Range[1] - tkscale = tk.Scale(tk_row_frame, orient=element.Orientation, variable=element.TKIntVar, from_=range_from, to_=range_to, length=slider_length, width=slider_width , bd=element.BorderWidth, relief=element.Relief, font=font) + tkscale = tk.Scale(tk_row_frame, orient=element.Orientation, variable=element.TKIntVar, from_=range_from, to_=range_to, resolution = element.Resolution, length=slider_length, width=slider_width , bd=element.BorderWidth, relief=element.Relief, font=font) # tktext_label.configure(anchor=tk.NW, image=photo) tkscale.config(highlightthickness=0) if element.BackgroundColor is not None: diff --git a/__pycache__/PySimpleGUI.cpython-36.pyc b/__pycache__/PySimpleGUI.cpython-36.pyc deleted file mode 100644 index d418c670..00000000 Binary files a/__pycache__/PySimpleGUI.cpython-36.pyc and /dev/null differ