ok.
Sinceramente non conosco molto python, quindi non conosco il framework di cui parli.
Lascia perdere. Per quello che devi fare puoi benissimo usare il modulo socket, a questo punto.
Ovviamente il codice è da sistemare, e non va ancora nulla...
Il problema che vorrei risolvere al momento è ricevere il messaggio sulla finestra.
Come dovrei fare?
Creare un evento che viene scaturito all'arrivo di un messaggio?
In tal caso dove verifico l'arrivo del messaggio?
Posso darti un consiglio strutturale ma non del codice vero e proprio dato che richiede un po' di tempo di cui al momento non dispongo.
La soluzione che userei io è la seguente:
- crei una class "gui" relativa all'interfaccia.
- crei una class "connection" relativa alla connessione.
- inizializzi la classe "gui" dalla quale:
-- inizializzi la classe "connection" alla quale passi come parametro l'istanza della classe "gui" stessa ("self"). Allo stesso tempo mantieni un riferimento all'istanza "gui" che hai appena creato. In parole povere qualcosa del tipo: "self.conn_instance = connection(self)".
- quando nella classe "connection" ti arrivano dei dati richiami un metodo della classe "gui" che pop-upperà' un messaggio.
- quando dalla classe GUI vorrai spedire dei dati richiamerai l'apposito metodo della classe "connection" tramite l'attributo "self.conn_instance" che conterrà l'istanza della classe "connection".
Il codice che ti incollo è molto povero ma è giusto per farti capire come io strutturei la cosa:
codice:
class gui:
def __init__(self):
self.connection_instance = connection(self)
def OnMsgReceived(self, msg):
# qui fai apparire un pop-up
def manda_messaggio(self, msg=''):
# self.connection_instance.send('hi there')
class connection:
def __init__(self, gui_instance):
self.gui_instance = gui_instance
# crea socket
# se ci sono dati da ricevere:
# self.OnDataReceived()
def OnDataReceived(self):
self.gui_instance.OnMsgReceived()
def send(self, msg):
# oggetto_socket.send(destinazione, messaggio)
Ci sono altri aspetti che meriterebbero di essere menzioati come ad esempio:
- i socket UDP non bloccanti che sei obbligato ad usare in quanto applicazione di messaggistica.
- prestare attenzione al riferimento circolare che viene a crearsi nel garbage collector utilizzando "self.gui_instance = gui_instance".
...ma sono cose di cui si può discutere anche in un secondo momento.