red.hell
07-04-2009, 15:22
sto preparando una gui per il metodo di minimizzazione evolutivo dove avevo già chiesto lumi in questa discussione (http://www.hwupgrade.it/forum/showthread.php?t=1955819)
sto cercando di utilizzare wxPython, poichè mi sembra più bello di TKinter e ma comunque più semplice di PyQT o di GTK
sto preparando una finestra con vari tab, il primo tab è dedicato all'input dei file necessari per la simulazione
sono riuscito a gestire l'evento di pressione del pulsante "sfoglia" per scegliere il file ed a scrivere in un wx.TextCtrl il path del file
se cerco però di "esportare" il path nella classe di livello superiore (quella che gestisce tutti i tab, non quella che gestisce solo il primo tab) me lo esporta prima che la variabile sia riempita
il file dopo devo caricarlo e controllarlo se è strutturato nel modo giusto
dovrei per cui fare vedere quella variabile (il print è solo per mostrare un uso della variabile che non faccia crashare il codice) dopo che sia stato scelto il file
import wx
import os, sys
class principale(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: principale.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
notebook_1 = wx.Notebook(self, -1, style=0)
notebook_1_pane_2 = wx.Panel(notebook_1, -1)
notebook_1_pane_1 = wx.Panel(notebook_1, -1)
notebook_1_pane_3 = wx.Panel(notebook_1, -1)
notebook_1.AddPage(scelta_file(notebook_1), "Primo")
notebook_1.AddPage(notebook_1_pane_2, "Secondo")
notebook_1.AddPage(notebook_1_pane_3, "Terzo")
self.SetSize((500, 500))
self.Layout()
print scelta_file.PathFile
class scelta_file(wx.NotebookPage):
def __init__(self, parent):
wx.NotebookPage.__init__(self, parent, -1)
self.panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add((-1, 5))
st1 = wx.StaticText(self.panel, -1, 'File elementi')
vbox.Add(st1, 0, wx.RIGHT, 8)
vbox.Add((-1, 5))
hbox1=wx.BoxSizer(wx.HORIZONTAL)
self.tc = wx.TextCtrl(self.panel, -1)
hbox1.Add(self.tc, 1, wx.EXPAND)
sfoglia1=wx.Button(self.panel, 1, 'Sfoglia')
hbox1.Add(sfoglia1,0)
vbox.Add(hbox1,0, wx.EXPAND)
self.Bind(wx.EVT_BUTTON, self.openfile, id=1)
vbox.Add((-1, 10))
self.panel.SetSizer(vbox)
self.panel.Fit()
def openfile(self, event):
dlg = wx.FileDialog(self, "Choose a file", os.getcwd(), "", "*.*", wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
mypath = os.path.basename(path)
self.PathFile="%s" % path
self.tc.AppendText("%s" % path)
dlg.Destroy()
def fineopenfile(self,event):
print "ci provo"
pathfile=self.tc.GetValue()
for line in file(pathfile):
mat[ii,:]=map(float, line.split())
ii=ii+1
print mat
print 'chiuso'
def PathFile(self):
pass
# end of class principale
if __name__ == '__main__':
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
principale = principale(None, -1, "Finestra principale")
app.SetTopWindow(principale)
principale.Show()
app.MainLoop()
grazie per l'aiuto :)
sto cercando di utilizzare wxPython, poichè mi sembra più bello di TKinter e ma comunque più semplice di PyQT o di GTK
sto preparando una finestra con vari tab, il primo tab è dedicato all'input dei file necessari per la simulazione
sono riuscito a gestire l'evento di pressione del pulsante "sfoglia" per scegliere il file ed a scrivere in un wx.TextCtrl il path del file
se cerco però di "esportare" il path nella classe di livello superiore (quella che gestisce tutti i tab, non quella che gestisce solo il primo tab) me lo esporta prima che la variabile sia riempita
il file dopo devo caricarlo e controllarlo se è strutturato nel modo giusto
dovrei per cui fare vedere quella variabile (il print è solo per mostrare un uso della variabile che non faccia crashare il codice) dopo che sia stato scelto il file
import wx
import os, sys
class principale(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: principale.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
notebook_1 = wx.Notebook(self, -1, style=0)
notebook_1_pane_2 = wx.Panel(notebook_1, -1)
notebook_1_pane_1 = wx.Panel(notebook_1, -1)
notebook_1_pane_3 = wx.Panel(notebook_1, -1)
notebook_1.AddPage(scelta_file(notebook_1), "Primo")
notebook_1.AddPage(notebook_1_pane_2, "Secondo")
notebook_1.AddPage(notebook_1_pane_3, "Terzo")
self.SetSize((500, 500))
self.Layout()
print scelta_file.PathFile
class scelta_file(wx.NotebookPage):
def __init__(self, parent):
wx.NotebookPage.__init__(self, parent, -1)
self.panel = wx.Panel(self, -1)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add((-1, 5))
st1 = wx.StaticText(self.panel, -1, 'File elementi')
vbox.Add(st1, 0, wx.RIGHT, 8)
vbox.Add((-1, 5))
hbox1=wx.BoxSizer(wx.HORIZONTAL)
self.tc = wx.TextCtrl(self.panel, -1)
hbox1.Add(self.tc, 1, wx.EXPAND)
sfoglia1=wx.Button(self.panel, 1, 'Sfoglia')
hbox1.Add(sfoglia1,0)
vbox.Add(hbox1,0, wx.EXPAND)
self.Bind(wx.EVT_BUTTON, self.openfile, id=1)
vbox.Add((-1, 10))
self.panel.SetSizer(vbox)
self.panel.Fit()
def openfile(self, event):
dlg = wx.FileDialog(self, "Choose a file", os.getcwd(), "", "*.*", wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
mypath = os.path.basename(path)
self.PathFile="%s" % path
self.tc.AppendText("%s" % path)
dlg.Destroy()
def fineopenfile(self,event):
print "ci provo"
pathfile=self.tc.GetValue()
for line in file(pathfile):
mat[ii,:]=map(float, line.split())
ii=ii+1
print mat
print 'chiuso'
def PathFile(self):
pass
# end of class principale
if __name__ == '__main__':
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
principale = principale(None, -1, "Finestra principale")
app.SetTopWindow(principale)
principale.Show()
app.MainLoop()
grazie per l'aiuto :)