05/02/2020, 19:34
05/02/2020, 20:08
07/02/2020, 10:51
mic_1 ha scritto:E' possibile inserire l'immagine ottenuta da B ad A anche se essendo procedurale indietro non si torna? Come posso risolvere? Devo per forza modificare il codice portando da procedurale ad oggetti????
11/02/2020, 11:32
class A(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
sizer = wx.BoxSizer()
sizer.Add(self, 1, wx.EXPAND)
self.Parent.SetSizer(sizer)
self.Distrib_CLCentr() #funzione richiamata con image
buf = io.BytesIO()
plt.savefig(buf, format = 'png', dpi=100)
buf.seek(0)
plt.close()
self.sizer = wx.BoxSizer(wx.HORIZONTAL)
if wx.UpdateUIEvent.CanUpdate(self):
self.UpdateWindowUI(wx.UPDATE_UI_FROMIDLE)
print('print1')
self.Image1 = wx.Image(buf2, wx.BITMAP_TYPE_ANY)
self.Image2 = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap(self.Image1))
self.sizer.Add(self.Image2, 1, wx.ALIGN_CENTRE)
self.sizer.Add(self.Image, 1, wx.ALIGN_CENTRE)
else:
self.Image = wx.Image(buf, wx.BITMAP_TYPE_ANY)
self.Image = wx.StaticBitmap(self, wx.ID_ANY, wx.Bitmap(self.Image))
self.sizer.Add(self.Image, 1, wx.ALIGN_CENTRE)
self.SetSizer(self.sizer)
class B(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.Button() # uno dei pulsanti richiama all'evento la funzione OnFit che genera la seconda image che vorrei sovrapporre in trasparenza alla prima image. Ce ne sarà poi un'altra da sovrapporre allo stesso modo.
def OnFit(self, event):
global buf2, eid, Image1
eid = event.GetId()
....... #codice di calcolo
self.fig, self.ax = plt.subplots()
self.fig.set_size_inches(15, 10)
self.ax.scatter(xCL, yCL, alpha=0.6)
self.ax.plot(xdata , np.polyval(p1, xdata) ,'r-')
self.ax.set(xlabel='Number of Neighbors', ylabel='Closeness Centrality')
self.ax.yaxis.grid(linestyle='--')
self.xticks = ([0, 1, 10, 100, roundup(max(xCL), n = 2)])
self.yticks = list(frange(0.000, roundup2(float(max(yCL)))+0.025, 0.025))
self.yticks_ = np.around(self.yticks, 4)
self.ax.set_xticks(self.xticks)
self.ax.set_yticks(self.yticks_)
self.ax.set_xticklabels(self.xticks, fontsize=8) #per stabilire un intervallo uso np.arange()
self.ax.set_yticklabels(self.yticks_, fontsize=8)
buf2 = io.BytesIO()
plt.savefig(buf2, format = 'png', dpi=100) #, bbox_inches='tight')
buf2.seek(0)
if wx.UpdateUIEvent.CanUpdate(self):
self.UpdateWindowUI(wx.UPDATE_UI_FROMIDLE)
plt.close()
A(self)
26/02/2020, 13:42
27/02/2020, 13:35
16/03/2020, 13:48
if wx.UpdateUIEvent.CanUpdate(self):
self.UpdateWindowUI(wx.UPDATE_UI_FROMIDLE)
05/05/2020, 09:31
05/05/2020, 18:20
class Tab(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent)
self.parent = parent
start = time.monotonic()
print('inizio Tab7 : {:>9.2f}'.format(start))
self.hSplitter = wx.SplitterWindow(self)
self.panelSX = wx.Panel(self.hSplitter)
self.panelDX = wx.Panel(self.hSplitter)
self.hSplitter.SplitVertically(self.panelSX, self.panelDX)
self.hSplitter.SetSashGravity(0.7)
self.hSplitter.SetBackgroundColour((0xff, 0xff, 0xff))
vbox = wx.BoxSizer(wx.VERTICAL)
sizer = wx.BoxSizer()
sizer.Add(self, 1, wx.EXPAND)
self.Parent.SetSizer(sizer)
self.Distrib_CLCentr()
buf = io.BytesIO()
plt.savefig(buf, format = 'png', dpi=100) #, bbox_inches='tight')
buf.seek(0)
plt.close()
self.sizer = wx.BoxSizer(wx.HORIZONTAL)
self.Image = wx.Image(buf, wx.BITMAP_TYPE_ANY)
self.Image = wx.StaticBitmap(self.panelSX, wx.ID_ANY, wx.Bitmap(self.Image))
self.sizer.Add(self.Image, 0, wx.ALIGN_CENTRE)
self.Centre()
self.hSplitter.SetSizer(vbox)
self.Button()
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(self.hSplitter, 1, wx.EXPAND)
self.SetSizer(sizer)
end = time.monotonic()
print('fine Tab7 : {:>9.2f}'.format(end))
print('intervallo: {:>9.2f}'.format(end - start))
def Distrib_CLCentr(self):
calcolo e creazione image1
def Button(self):
# 3 bottoni di cui 1 lancia la FIT
def FIT(self, event):
calcolo e creazione image2
buf2 = io.BytesIO()
plt.savefig(buf2, format = 'png', dpi=100, transparent=True)
buf2.seek(0)
#IN QUESTO PUNTO L'IMAGE2 VIENE INSERITA NEL PANNELLO DI SX.
if event:
self.Image = wx.Image(buf2, wx.BITMAP_TYPE_ANY)
self.Image = wx.StaticBitmap(self.panelSX, wx.ID_ANY, wx.Bitmap(self.Image))
self.sizer.Add(self.Image, 0, wx.ALIGN_CENTRE)
else:
pass
06/05/2020, 07:52
mic_1 ha scritto:wxpython non è wxwidgets di python?
mic_1 ha scritto:VORREI ORA RENDERE IL BOTTONE CHE RICHIAMA LA FUNZIONE FIT COME ENABLE/DISABLE
Enable()
e Disable()
sul pulsante.Disable()
all'inizio ed Enable()
alla fine, ma potrebbe essere (molto) più complicato. Nell'esecuzione di quella funzione, il controllo non ritorna mai al al framework che gestisce l'interfaccia grafica, quindi tutte le finestre potrebbero sembrare bloccate. La soluzione di solito è di eseguire tale funzione in un thread separato, e quando termina aggiornare l'interfaccia usando qualche tipo di sincronizzazione o evento. Non so come si possa fare in wxwidgets, né soprattutto in wxpython, considerato che Python non offre un vero multithreading.
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.