[python] Finestra a Tab

Messaggioda mic_1 » 23/07/2019, 23:35

Ciao a tutti!
Ho trovato questo codice su internet, o meglio, ciascun tab era in realtà una classe. Io l'ho modificato per poter inserire le mie funzioni di calcolo. Avrei bisogno di una finestra a tab su cui inserire i miei risultati e grafici.
Questo codice mi ritorna errore nel punto in cui aggiungo tab AddPage(), ma se lascio le diverse classi non riesco poi ad utilizzare le variabili locali della mia funzione.
Non è da molto che programmo :lol:
Qualcuno potrebbe aiutarmi gentilmente??? Grazie!!!

Codice:
import wx

class Tab(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)   
        self.TabOne(), self.TabTwo(), self.TabThree(), self.TabFour()
       
    def TabOne(self):
        wx.StaticText(self, -1, "This is the first tab", (20,20))
    def TabTwo(self):
        wx.StaticText(self, -1, "This is the second tab", (20,20))       
    def TabThree(self):
        wx.StaticText(self, -1, "This is the third tab", (20,20))     
    def TabFour(self):
        wx.StaticText(self, -1, "This is the last tab", (20,20))   

class SubFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title="wxPython tabs example")
#        super(SubFrame, self).__init__(None, title ="wxPython", size = (950,990))
        p = wx.Panel(self)
        nb = wx.Notebook(p)
        # Create the tab windows
        tab1 = Tab.TabOne(nb)
        tab2 = Tab.TabTwo(nb)
        tab3 = Tab.TabThree(nb)
        tab4 = Tab.TabFour(nb)
        # Add the windows to tabs and name them.
        nb.AddPage(tab1, "Analysis Network")
        nb.AddPage(tab2, "")
        nb.AddPage(tab3, "")
        nb.AddPage(tab4, "")
        # Set noteboook in a sizer to create the layout
        sizer = wx.BoxSizer()
        sizer.Add(nb, 1, wx.EXPAND)
        p.SetSizer(sizer)   
       
 
def main():
    app = wx.App()
    SubFrame().Show()
    app.MainLoop()

if __name__ == '__main__':
    main()

mic_1
Junior Member
Junior Member
 
Messaggio: 137 di 141
Iscritto il: 11/01/2011, 19:11

Re: [python] Finestra a Tab

Messaggioda mic_1 » 24/07/2019, 03:29

Vi aggiorno.
Ho reso globali le variabili locali della funzione in modo da poterle chiamare.
Ho riportato il codice della finestra allo stato iniziale con le classe.
Io tentavo oltretutto, eheheh povera me, di scrivere sulla finestra con wx.StaticText() ma questa è utile solo per una descrizione, una label, ma non per numeri nemmeno se li trasformo in stringa. Ora devo capire cosa usare.
Inoltre ho capito che è meglio realizzare una griglia con wx.grid dato che i dati che desidero visualizzare su finestra non sono pochi.

Cosa mi suggerite? E' giusta la valutazione o cosa sbaglio? Spero di non complicarmi la vita eheheh.
Grazie a chiunque abbia suggerimenti utili.
mic_1
Junior Member
Junior Member
 
Messaggio: 138 di 141
Iscritto il: 11/01/2011, 19:11

Re: [python] Finestra a Tab

Messaggioda mic_1 » 24/07/2019, 06:19

Al momento ho risolto cosi:
Ho riportato solo un TAB, quella su cui ho lavorato ma in tot sono 4TAB = 4Classi: ogni classe TAB è richiamata, come nel codice precedentemente postato, nella classe SubFrame().
In questo modo sono riuscita a visualizzare i dati calcolari in una funzione esterna: Ho reso GLOBALI le variabili LOCALI della funzione, inserendo
Codice:
global var1, var2,
nella _init_ di inizializzazione.
Per il momento ho risolto. Spero possa essere di aiuto a qualcuno.

Codice:
class TabOne(wx.Panel):
    def __init__(self, parent):
        global var1, var2, etc #variabili numeriche di una funzione esterna. Da locali rese globali
        wx.Panel.__init__(self, parent)
        t = wx.StaticText(self, -1, "This is the first tab", (20,20))
        t = wx.StaticText(self, -1, "Descrizione 1: ", (20,40))
        t = wx.StaticText(self, -1, "Descrizione 2 ", (20,60))
        st1 = wx.StaticText(self, label='', pos=(150, 40))   
        st1.SetLabel(str(var1)+' :')
        st2 = wx.StaticText(self, label='', pos=(40, 60))     
        st2.SetLabel(str(var2))
        font = t.GetFont()
        font.SetPointSize(10)
        t.SetFont(font)


Dimenticavo... Per visualizzare una variabile numerica ho usato:
Codice:
st1 = wx.StaticText(self, label='', pos=(150, 40))   
st1.SetLabel(str(var1)+' :')
mic_1
Junior Member
Junior Member
 
Messaggio: 139 di 141
Iscritto il: 11/01/2011, 19:11


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti