Python Tlinter - problema con 2 Listbox

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

Python Tlinter - problema con 2 Listbox

Messaggioda robdevo » venerdì 14 giugno 2019, 15:58

Buon giorno, ho un'applicazione che presenta 4 bottoni e 2 listbox compilate (list1 e list2).
Prima di poter premere il bottone "Inserimento" bisogna aver scelto dalla lista "Tipologie" (list1) un elemento, se questo elemento è uguale a "Spese VARIE" allora bisogna aver scelto anche un elemento dalla seconda lista "Dettaglio" (list2).
Finchè scelgo un elemento diverso da "Spese VARIE" tutto funziona, invece quando scelgo "Spese VARIE" mi viene chiesto giustamente di scegliere un elemento dalla seconda lista, quando lo scelgo l'applicazione mi segnala errore sulla prima lista.
Codice: Seleziona tutto
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
================ RESTART: F:/VBasicMio/6 - Python/PerForum.py ================
Tipologia selezionata ...  Supermercato
Tipologia selezionata ...  Spese VARIE
Dettaglio selezionato ...  Spese x Vestiario
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "F:/VBasicMio/6 - Python/PerForum.py", line 77, in SalvaTipologia
    self.tipologia = self.list1.get(self.list1.curselection())
  File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2798, in get
    return self.tk.call(self._w, 'get', first)
_tkinter.TclError: bad listbox index "": must be active, anchor, end, @x,y, or a number
>>>


Segue il codice dell'applicazione:
Codice: Seleziona tutto
from tkinter import *
from SpeseInserimento import *

class Principale(Tk):
    #---------------------------------------------------------------------------
    #... inizializza classe
    #---------------------------------------------------------------------------
    def __init__(self):
        super().__init__()
        self.geometry('800x800+100+100')
        self.title("Gestione Spese 2014")
        self.messaggio = StringVar()
        self.tipologia = ".."
        self.dettaglio = ".."
        self.nullo = ".."
        self.speseVarie = "Spese VARIE"
        self.errore = False
        labelfont = ('times', 10, 'bold')           # font comune x le label
        #
        self.frm1 = Frame(self, relief='sunken', border=2, bg='Green')
        self.frm1.pack()
        self.bottone1 = Button(self.frm1, text = 'Inserimento', bg='Yellow', command = self.Inserisci)
        self.bottone1.pack(side=LEFT, padx=30)
        self.bottone1.focus_set()       
        self.bottone2 = Button(self.frm1, text = 'Modifica', bg='Yellow', command = self.Modifica)
        self.bottone2.pack(side=LEFT, padx=30)
        self.bottone3 = Button(self.frm1, text = 'Cancellazione', bg='Yellow', command = self.Cancella)
        self.bottone3.pack(side=LEFT, padx=30)
        self.bottone4 = Button(self.frm1, text = 'Esci', bg='Red', command = self.Esci)
        self.bottone4.pack(padx=30)
        #
        self.frm2 = Frame(self, relief='sunken', border=2, bg='Yellow')
        self.frm2.pack(fill=BOTH, side=TOP)
        self.lab1 = Label(self.frm2, text='Tipologia spese', font=labelfont)
        self.lab1.pack(side=LEFT, padx=10)
        self.list1 = Listbox(self.frm2)
        self.ImpostaTipologieSpese()                # imposta Tipologie
        self.list1.pack(side=LEFT)
        self.list1.bind('<<ListboxSelect>>', self.SalvaTipologia)
        self.lab2 = Label(self.frm2, text='Dettaglio spese VARIE', font=labelfont)
        self.lab2.pack(side=LEFT, padx=10)
        self.list2 = Listbox(self.frm2)
        self.ImpostaDettaglioSpese()                # imposta Dettagli
        self.list2.pack(side=LEFT)
        self.list2.bind('<<ListboxSelect>>', self.SalvaDettaglio)
        #
        self.frm3 = Frame(self, relief='sunken', border=2, bg='Orange')
        self.frm3.pack(fill=BOTH, side=TOP)
        self.scrollbar = Scrollbar(self.frm3, orient=VERTICAL)
        self.lab3 = Label(self.frm3, text='Spese associate ai dati scelti', font=labelfont)
        self.lab3.pack(side=LEFT, padx=10)
        self.lbx1 = Listbox(self.frm3, yscrollcommand=self.scrollbar.set, height=30, width=90)
        self.scrollbar.config(command=self.lbx1.yview)
        self.scrollbar.pack(side=RIGHT, fill=Y)
        self.LeggiDB()                              # imposta Dati letti dal DB
        self.lbx1.pack(fill=BOTH, side=LEFT, padx=10)
        #
        self.frm4 = Frame(self, relief='sunken', border=4)
        self.frm4.pack(fill=BOTH, side=BOTTOM)
        self.msg = Label(self.frm4, textvariable=self.messaggio)
        self.msg.pack()
        #
        self.inserisci = Inserimento
    #----------------------------------------------------------------------------
    def ImpostaTipologieSpese(self):
        self.list1.insert(END, "Visite Mediche")
        self.list1.insert(END, "Farmacia")
        self.list1.insert(END, "Supermercato")
        self.list1.insert(END, "Carburante")
        self.list1.insert(END, "Telepass")
        self.list1.insert(END, "Spese BOX")
        self.list1.insert(END, "Spese AUTO")
        self.list1.insert(END, "Spese VARIE")
    #----------------------------------------------------------------------------
    def SalvaTipologia(self, evento):
        self.tipologia = self.list1.get(self.list1.curselection())
        print ('Tipologia selezionata ... ', self.tipologia)
    #----------------------------------------------------------------------------
    def ImpostaDettaglioSpese(self):
        self.list2.insert(END, "Spese x Casa")
        self.list2.insert(END, "Spese x Lavanderia")
        self.list2.insert(END, "Spese x Alimenti")
        self.list2.insert(END, "Spese x Vestiario")
        self.list2.insert(END, "Spese x Bar")
        self.list2.insert(END, "Spese x Parrucchiere")
        self.list2.insert(END, "Spese x Viaggi")
        self.list2.insert(END, "Spese x Pranzi/Cene")
        self.list2.insert(END, "Spese x Regali")
        self.list2.insert(END, "Spese non dettagliate")
     #----------------------------------------------------------------------------
    def SalvaDettaglio(self, evento):
        self.dettaglio = self.list2.get(self.list2.curselection())
        print ('Dettaglio selezionato ... ', self.dettaglio)   
    #----------------------------------------------------------------------------
    def LeggiDB(self):
         pass
    #----------------------------------------------------------------------------
    def Esci(self):
        self.messaggio.set ('Esci dalla funzione')
        self.quit()
    #----------------------------------------------------------------------------
    def Inserisci(self):
        self.errore = False
        self.messaggio.set ('Funzione di inserimento')
        self.CheckList1()
        if not self.errore:
            self.inserisci()   
    #----------------------------------------------------------------------------
    def Modifica(self):
        self.messaggio.set ('Funzione di modifica')
    #----------------------------------------------------------------------------
    def Cancella(self):
        self.messaggio.set ('Funzione di cancellazione')
    #----------------------------------------------------------------------------
    def CheckList1(self):
        self.errore = False
        if self.tipologia == self.nullo:
            self.errore = True
            self.messaggio.set ('ERRORE: Obbligatorio selezionare una Tipologia')
        else:
            if self.tipologia == self.speseVarie:
                if self.dettaglio == self.nullo:
                    self.errore = True
                    self.messaggio.set ('ERRORE: Obbligatorio selezionare un Dettaglio')
                else:
                    pass
       
#... finestra principale
if __name__ == '__main__':
    main = Principale()
    main.mainloop()



Qualcuno mi sà aiutare, grazie.
Portatile con Ubuntu 18.04 - fisso con Windows 10
robdevo
Prode Principiante
 
Messaggi: 38
Iscrizione: ottobre 2009

Re: Python Tlinter - problema con 2 Listbox

Messaggioda nuzzopippo » venerdì 14 giugno 2019, 18:09

Ciao

... un consiglio per prima cosa : Non è buona cosa chiedere aiuto su codice che utilizza Tuoi moduli, dovresti cercare di circoscrivere il problema che non riesci a risolvere ed elaborare esempi minimali su cui discutere.

Non ho guardato con troppa attenzione l'intero codice vi è però un errore alla riga 63 (self.inserisci = Inserimento), a parte questo, vedo che non fai alcuna verifica che vi sia qualcosa selezionato nelle listbox, prova queste variazioni :
Codice: Seleziona tutto
    def SalvaDettaglio(self, evento):
        if not self.list2.curselection(): return
        self.dettaglio = self.list2.get(self.list2.curselection())
        print ('Dettaglio selezionato ... ', self.dettaglio)   

...
    def SalvaTipologia(self, evento):
        if not self.list1.curselection(): return
        self.tipologia = self.list1.get(self.list1.curselection())
        print ('Tipologia selezionata ... ', self.tipologia)


[Edit] Provato il Tuo codice, commentando il codice errato che Ti ho segnalato, modificando le due funzioni di callback come Ti ho mostrato ed inserendo il metodo
Codice: Seleziona tutto
    def inserisci(self):
        pass

per ovviare alla chiamata "self.inserisci()" nel metodo "Inserisci(self)" definito nella Tua classe ... sembra funzionare.

... Spero, che i metodi "Inserisci" e "inserisci" siano definiti volontariamente sfruttando il case-sensitive di python (avresti un loop infinito, altrimenti)
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1257
Iscrizione: ottobre 2006

Re: Python Tlinter - problema con 2 Listbox

Messaggioda robdevo » sabato 15 giugno 2019, 13:23

Innanzi tutto grazie per la dritta sulla verifica della selezione di una Listbox, ho fatto le modifiche che mi hai suggerito, però c'è una cosa che non capisco, perchè quando seleziono la seconda Listbox (list2), il codice passa anche dalla funzione "SalvaTipologia" come se avessi selezionato un elemento della prima Listbox (list1) ???
Sembra quasi che l'evento "ListboxSelect" venga attivato su tutte e 2 le Listbox, mi sembra strano.

Ti posto il codice smagrito delle istruzioni non necessarie per questo problema, in coda inserisco il risultato dato dalle print.
Codice: Seleziona tutto

from tkinter import *
class Principale(Tk):
    #---------------------------------------------------------------------------
    #... inizializza classe
    #---------------------------------------------------------------------------
    def __init__(self):
        super().__init__()
        self.geometry('800x800+100+100')
        self.title("Gestione Spese 2014")
        self.messaggio = StringVar()
        self.tipologia = ".."
        self.dettaglio = ".."
        self.nullo = ".."
        self.speseVarie = "Spese VARIE"
        self.errore = False
        labelfont = ('times', 10, 'bold')           # font comune x le label
        #
        self.frm1 = Frame(self, relief='sunken', border=2, bg='Green')
        self.frm1.pack()
        self.bottone1 = Button(self.frm1, text = 'Inserimento', bg='Yellow', command = self.Inserisci)
        self.bottone1.pack(side=LEFT, padx=30)
        self.bottone1.focus_set()       
        self.bottone4 = Button(self.frm1, text = 'Esci', bg='Red', command = self.Esci)
        self.bottone4.pack(padx=30)
        #
        self.frm2 = Frame(self, relief='sunken', border=2, bg='Yellow')
        self.frm2.pack(fill=BOTH, side=TOP)
        self.lab1 = Label(self.frm2, text='Tipologia spese', font=labelfont)
        self.lab1.pack(side=LEFT, padx=10)
        self.list1 = Listbox(self.frm2)
        self.ImpostaTipologieSpese()                # imposta Tipologie
        self.list1.pack(side=LEFT)
        self.list1.bind('<<ListboxSelect>>', self.SalvaTipologia)
        self.lab2 = Label(self.frm2, text='Dettaglio spese VARIE', font=labelfont)
        self.lab2.pack(side=LEFT, padx=10)
        self.list2 = Listbox(self.frm2)
        self.ImpostaDettaglioSpese()                # imposta Dettagli
        self.list2.pack(side=LEFT)
        self.list2.bind('<<ListboxSelect>>', self.SalvaDettaglio)
        #
        self.frm4 = Frame(self, relief='sunken', border=4)
        self.frm4.pack(fill=BOTH, side=BOTTOM)
        self.msg = Label(self.frm4, textvariable=self.messaggio)
        self.msg.pack()
    #----------------------------------------------------------------------------
    def ImpostaTipologieSpese(self):
        self.list1.insert(END, "Visite Mediche")
        self.list1.insert(END, "Farmacia")
        self.list1.insert(END, "Supermercato")
        self.list1.insert(END, "Carburante")
        self.list1.insert(END, "Telepass")
        self.list1.insert(END, "Spese BOX")
        self.list1.insert(END, "Spese AUTO")
        self.list1.insert(END, "Spese VARIE")
    #----------------------------------------------------------------------------
    def SalvaTipologia(self, evento):
        if not self.list1.curselection():
            print ("Passa da SalvaTipologia")
            return
        self.tipologia = self.list1.get(self.list1.curselection())
        print ('Tipologia selezionata ... ', self.tipologia)
    #----------------------------------------------------------------------------
    def ImpostaDettaglioSpese(self):
        self.list2.insert(END, "Spese x Casa")
        self.list2.insert(END, "Spese x Lavanderia")
        self.list2.insert(END, "Spese x Alimenti")
        self.list2.insert(END, "Spese x Vestiario")
        self.list2.insert(END, "Spese x Bar")
        self.list2.insert(END, "Spese x Parrucchiere")
        self.list2.insert(END, "Spese x Viaggi")
        self.list2.insert(END, "Spese x Pranzi/Cene")
        self.list2.insert(END, "Spese x Regali")
        self.list2.insert(END, "Spese non dettagliate")
    #----------------------------------------------------------------------------
    def SalvaDettaglio(self, evento):
        if not self.list2.curselection():
            print ("Passa da SalvaDettaglio")           
            return
        self.dettaglio = self.list2.get(self.list2.curselection())
        print ('Dettaglio selezionato ... ', self.dettaglio)   
    #----------------------------------------------------------------------------
    def Esci(self):
        self.messaggio.set ('Esci dalla funzione')
        self.quit()
    #----------------------------------------------------------------------------
    def Inserisci(self):
        self.errore = False
        self.messaggio.set ('Funzione di inserimento')
        self.CheckList1()
        if not self.errore:
            pass
   #----------------------------------------------------------------------------
    def CheckList1(self):
        self.errore = False
        if self.tipologia == self.nullo:
            self.errore = True
            self.messaggio.set ('ERRORE: Obbligatorio selezionare una Tipologia')
        else:
            if self.tipologia == self.speseVarie:
                if self.dettaglio == self.nullo:
                    self.errore = True
                    self.messaggio.set ('ERRORE: Obbligatorio selezionare un Dettaglio')
                else:
                    pass
       
#... finestra principale
if __name__ == '__main__':
    main = Principale()
    main.mainloop()

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
================ RESTART: F:\VBasicMio\6 - Python\PerForum.py ================
Tipologia selezionata ...  Supermercato
Tipologia selezionata ...  Spese VARIE
Dettaglio selezionato ...  Spese x Lavanderia
Passa da SalvaTipologia



Come vedi dopo aver selezionato la tipologia "Spese VARIE" viene richiesta la selezione di un dettaglio, quindi seleziono "Spese x Lavanderia", dopo però viene stampata anche la dicitura " Passa da SalvaTipologia", cosa che non dovrebbe accadere visto che io ho selezionato list2 e non list1, mi sai spiegare il motivo.

Grazie e ciao.
Portatile con Ubuntu 18.04 - fisso con Windows 10
robdevo
Prode Principiante
 
Messaggi: 38
Iscrizione: ottobre 2009

Re: Python Tlinter - problema con 2 Listbox

Messaggioda nuzzopippo » domenica 16 giugno 2019, 7:33

robdevo Immagine ha scritto:... però c'è una cosa che non capisco, perchè quando seleziono la seconda Listbox (list2), il codice passa anche dalla funzione "SalvaTipologia" come se avessi selezionato un elemento della prima Listbox (list1) ???


Veramente Ti capita anche facendo l'inverso, guarda questo output eseguendo pari pari il programma come lo hai postato
Codice: Seleziona tutto
>>>
================ RESTART: /home/nuzzo/test/pyt/robdevo2.py ================
Tipologia selezionata ...  Spese BOX
Dettaglio selezionato ...  Spese x Parrucchiere
Passa da SalvaTipologia
Dettaglio selezionato ...  Spese x Vestiario
Dettaglio selezionato ...  Spese x Bar
Dettaglio selezionato ...  Spese x Parrucchiere
Tipologia selezionata ...  Spese BOX
Passa da SalvaDettaglio
Tipologia selezionata ...  Telepass
Tipologia selezionata ...  Carburante
Dettaglio selezionato ...  Spese x Parrucchiere
Passa da SalvaTipologia
>>>

Il perché accada non saprei dirlo ma è strettamente correlato al tipo di evento intercettato, infatti, modificando l'intercettazione al doppio click ("<Double-1>"), p.e., non accade, vedi giù
Codice: Seleziona tutto
>>>
================ RESTART: /home/nuzzo/test/pyt/robdevo2.py ================
Tipologia selezionata ...  Telepass
Dettaglio selezionato ...  Spese x Parrucchiere
Dettaglio selezionato ...  Spese x Viaggi
Tipologia selezionata ...  Spese AUTO
>>>

Personalmente ho il sospetto che sia la perdita di focus (e quindi della selezione) della lista "abbandonata" a scatenare un nuovo evento di intercettazione correlato a <<ListboxSelect>>, ma ne sono tutt'altro che certo, necessaria una sessione di debug con tracciamento passo-passo di ciò che accade per sincerarsene.

Per altro, di per se l'intercettazione degli eventi in tkinter non è argomento immediato e che personalmente non posso dire di padroneggiare in pieno, docs a parte le mie difficoltà con l'inglese sono micidiali, c'è da sperare nell'intervento di utenti più esperti in grado di chiarire il punto.

Da quanto ho capito, sulla gestione degli eventi in genere, l'intercettazione di un evento non si ferma al widget che la intercetta, a meno che questi non la blocchi con una istruzione "return 'break'", ma si ripercuote nella finestra sino alla finestra madre (tempo fa mi feci un piccolo programma di test per cercare di capire come funziona la faccenda, a seguito di alcune anomalie notate, se interessa lo posto), ne tuo caso, però, il "return 'break'" non ha effetto, la qual cosa rafforza il mio sospetto di evento scatenato dalla perdita del focus (altro evento di per se)
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1257
Iscrizione: ottobre 2006

Re: Python Tlinter - problema con 2 Listbox

Messaggioda robdevo » domenica 16 giugno 2019, 16:38

Grazie della risposta, la difficoltà (almeno x me) sta nel fatto che non riesco a trovare un documento che riporti per ogni widget quali sono gli eventi potenziali.
Sembra che l'unica documentazione riporti gli eventi generabili da tastiera, ma non trovo nulla sugli eventi dei singoli widget.
Ho provato a leggere ll Tutorial di Python ma non trovo nulla e anche i manuali di Tkinter sono molto generici sugli eventi.
Ciao.
Portatile con Ubuntu 18.04 - fisso con Windows 10
robdevo
Prode Principiante
 
Messaggi: 38
Iscrizione: ottobre 2009

Re: Python Tlinter - problema con 2 Listbox

Messaggioda nuzzopippo » lunedì 17 giugno 2019, 6:46

robdevo Immagine ha scritto:Grazie della risposta, la difficoltà (almeno x me) sta nel fatto che non riesco a trovare un documento che riporti per ogni widget quali sono gli eventi potenziali. ...


In merito a tkinter, buona documentazione reputo quella di "New Mexico Tech", ossia le "Tkinter GUI reference 8.5", anche se aggiornata al 2013.
Fino a poco tempo fa il sito era accessibile, ora non lo trovo più, è disponibile una versione pdf qui,
Ti suggerisco di scaricarla, guarda poi i capitoli 26 "Universal widget methods" e 54 "Events", il capitolo 14 tratta specificatamente le ListBox, ma non dice niente riguardo ad eventi specifici del widget.

L'evento <<ListboxSelect>> non è presente nel testo, lo potrai trovare nella relativa docsdi tkinter 8.6.9 ma sono indicazioni estremamente scarne.
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1257
Iscrizione: ottobre 2006

Re: Python Tlinter - problema con 2 Listbox

Messaggioda robdevo » lunedì 17 giugno 2019, 9:11

Grazie per il tuo consiglio circa la documentazione, ho già scaricato il documento che risulta più aggiornato anche se di poco (31-12-2013).
Ma anche li come dicevi l'argomento non è trattato in modo approfondito.

Scusa ma Tu, come fai a fare delle applicazioni se poi non si riesce a gestire in modo appropriato gli eventi? Non li gestisci o come fai?

Grazie e ciao.
Portatile con Ubuntu 18.04 - fisso con Windows 10
robdevo
Prode Principiante
 
Messaggi: 38
Iscrizione: ottobre 2009

Re: Python Tlinter - problema con 2 Listbox

Messaggioda nuzzopippo » lunedì 17 giugno 2019, 11:34

robdevo Immagine ha scritto:Scusa ma Tu, come fai a fare delle applicazioni se poi non si riesce a gestire in modo appropriato gli eventi? Non li gestisci o come fai?


Con molto sudore e prove? ;)
Scherzo, naturalmente.

Non è che possa realizzarsi una GUI senza gestire gli eventi, ovviamente, cerco di capire cosa fanno le varie tipologie di eventi e seleziono quelli che "potrebbero" essermi utili e mi progetto l'applicazione solo dopo aver capito gli strumenti disponibili.

Non prendermi poi per un esperto. Ho qualche esperienza in altri linguaggi ma in python mi considero un apprendista.
Relativamente, poi, a tkinter, ho poca esperienza, solo un programma (di utilità) completo realizzato ed un altro (di tipo ludico) in cantiere ma in genere gli eventi "necessari" si individuano e gestiscono facilmente
... nel caso Ti possano interessare i miei modelli di ragionamento (certamente scarsi quale livello), a tempo perso scrivo degli appunti, mirati a mio esclusivo pro-memoria, il caso in link è uno studio per la composizione di un controllo "composito", venutomi in mente a seguito di un post in questo forum, fermo da un po' per questioni di tempo. L'ultima parte la scriverò, forse, a settembre, comunque comparando le classi di studio del controllo e quelle di test, potrai vedere come affronto ciò che non so.

Per altro, trovo anche tkinter piuttosto "limitato", utile perché di default ma molto limitato, sto considerando di passare ad altri framework.
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1257
Iscrizione: ottobre 2006

Re: Python Tlinter - problema con 2 Listbox

Messaggioda robdevo » lunedì 17 giugno 2019, 15:08

Francamente sono un pò deluso, ho fatto un pò di programmi 'amatoriali' in VB .NET e volevo vedere di utilizzare Python\Tkinter per fare le stesse cose in modo di imparare il linguaggio.
Ma da quello che mi dici e dalle piccole prove che ho fatto, mi rendo conto che forse Tkinter è un po carente (forse perchè non vogliono investire su un programma gratuito?).
Soprattutto la documentazione di una GUI che non riporta una gestione precisa degli Eventi, mi lascia perplesso, visto che parliamo di qualcosa sviluppato da un pò di anni.

Comunque grazie, cercherò di proseguire nel mio intento, caso mai Ti disturberò ancora con altre domande (sei l'unico che mi risponde).

Ciao.
Portatile con Ubuntu 18.04 - fisso con Windows 10
robdevo
Prode Principiante
 
Messaggi: 38
Iscrizione: ottobre 2009

Re: Python Tlinter - problema con 2 Listbox

Messaggioda nuzzopippo » lunedì 17 giugno 2019, 20:00

robdevo Immagine ha scritto:Francamente sono un pò deluso, ho fatto un pò di programmi 'amatoriali' in VB .NET e ...


Beh, capisco, tieni però presente che in "questo mondo" non necessariamente ci sono dietro entità con mezzi ed organizzate, molto di ciò che trovi nell'open source è lavoro volontario (c'è anche professionale, certamente), la carenza di documentazione è, purtroppo, un male endemico.
Di fondo, aderire a questi contesti ha anche una vena filosofica, a volte.

robdevo Immagine ha scritto:Comunque grazie, cercherò di proseguire nel mio intento, caso mai Ti disturberò ancora con altre domande (sei l'unico che mi risponde).


Ti assicuro che qui (ed anche altrove) gironzola gente molto capace che aiuta volentieri, certo non bisogna aspettarsi che sia presente ad ogni momento, hanno da fare e quelli "bravi" molto più degli altri. Il periodo estivo, poi, è normalmente un periodo "di stanca".
Comunque, domande "interessanti" e ben poste solleticano risposte interessanti, se saprai porle vedrai che arrivano interventi molto al di sopra dei miei.

Ciao.
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1257
Iscrizione: ottobre 2006

Re: Python Tlinter - problema con 2 Listbox

Messaggioda robdevo » lunedì 17 giugno 2019, 20:34

Relativamente all'utilizzo di altri Framework, ha mai visto o utilizzato wxPython,
Stavo cercando di capire se è utilizzabile in ambito Windows (sembra di si), ma non ho ancora capito come installarlo sul pc una volta scaricato il download.
Per caso utilizzi qualche altro strumento??
Ciao.
Portatile con Ubuntu 18.04 - fisso con Windows 10
robdevo
Prode Principiante
 
Messaggi: 38
Iscrizione: ottobre 2009

Re: Python Tlinter - problema con 2 Listbox

Messaggioda nuzzopippo » martedì 18 giugno 2019, 7:09

Se Ti interessa la programmazione python sotto windows, Ti suggerirei di seguire lo specifico blog di Poligneri, che reputo capace programmatore ed eccellente divulgatore, Ti sarà utile.

In merito alle wxPython, sono ancora in fase di approccio iniziale, qualcosa ho visto ed ho anche scritto degli appunti su problematiche trovate nella installazione sotto ubuntu 18.04.
Pur non avendo esperienza diretta di queste librerie sotto windows (non lo uso da circa 20 anni) so per certo che girano bene sotto tale s.o.
Dovrebbe essere possibile installarle direttamente da pip (comando : "pip install wxPython") ma ci sono anche delle whell precompilate per windows (cosa che per linux non c'è), Ti suggerirei di partire da questa pagina per acquisire le informazioni e risorse aderenti alla Tua situazione.

Spero mi scuserete (Tu ed i moderatori) se approfitto di questa occasione per segnalare che sempre il Poligneri ha in corso di auto-publicazione un libro sulle wxPython, il testo è "Capire wxPython".

Il testo è un "work in progress" puntato sulla versione Phoenix (l'ultima) delle wx, dal costo modesto, e l'autore è veramente bravo, ho avuto modo di consultare il suoi appunti sulle wx ed erano scritti in modo eccellente, suggerirei agli utenti interessati di scaricarsi il campione gratuito del testo e valutare se il caso di acquisirlo.

I moderatori mi scusino se mi permetto il suggerimento, lo ho posto perché sono convinto sia interesse del mondo open-source, di cui questa comunità fa parte, stimolare, anche facendo piccole spese, chi produce materiale ben fatto ed utile, rendendolo così più propenso al lavoraccio che ci vuole per dare condivise le conoscenze acquisite ... avrei voluto segnalare meglio ma non ho individuato tread opportuni.
Avatar utente
nuzzopippo
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1257
Iscrizione: ottobre 2006


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 2 ospiti