Topic: problema con onclick  (Letto 109 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Carmen DAgostino

  • python unicellularis
  • *
  • Post: 7
  • Punti reputazione: 0
    • Mostra profilo
problema con onclick
« il: Gennaio 23, 2020, 10:40 »
salve, sto realizzando campo minato con turtle usando i click del muose. In particolare quando clicco su una determinata cella la funzione scopri(x,y) mi scopre la cella e poi la funzione stampacampo() che viene chiamata alla fine della funzione scopri, stampa il campo di gioco andando a visualizzare la cella scoperta. Inoltre la funzione scopri(x,y) restituisce True se si scopre una cella con la bomba. il tutto sembra funzionare, ma se metto il comando wn.onclick(scopri) all'interno di un ciclo per controllare lo stato della partita , il codice non funziona anzi si blocca la finestra grafica.

a grandi linee:

wn= turtle.Screen
finito= False
stampacampo()
while not finito:
             finito = wn.onclick(scopri)

come posso risolvere?
« Ultima modifica: Gennaio 23, 2020, 13:10 da Carmen DAgostino »

Offline nuzzopippo

  • python neanderthalensis
  • ****
  • Post: 255
  • Punti reputazione: 0
    • Mostra profilo
salve, sto realizzando campo minato con turtle e mi cliedevo come posso far attendere il programma finché non si clicca sullo schermo per scoprire una cella.  Ho pensato di risolvere con un il del tipo:

wn= turtle.Screen

"turtle"? ... è forse l'esemplificativo di disegno con tkinter che si vede tal volta?

Se la risposta è "Si", non mi sembra una modalità adeguata per disegnare una interfaccia grafica per una applicazione dektop, anche se dedicata ad un "gioco".

Perdonami la domanda, @Carmen, ma hai già programmato interfacce grafiche?

Dico ciò perché una interfaccia grafica si basa sugli "eventi" : non è un programma esterno all'interfaccia grafica che "aspetta", è l'interfaccia grafica che scatena, tramite metodi di callback alcune azioni di una procedura che fa parte o è inclusa o è invocata nel thread della interfaccia grafica.

Suppongo Tu abbia implementato la parte definente le celle dati con le "mine" e le indicazioni numeriche di mine eventualmente limitrofe ad una cella "libera".

Suppongo, inoltre, che Tu voglia realizzare una applicazione desktop basata su tkinter.

Nel Tuo caso specifico, personalmente, utilizzerei un canvas come "sfondo" e "contenitore", dimensionato su di una griglia quadrata o rettangolare di caselle quadrate corrispondente allo schema calcolato e con su disegnate la griglia, le mine ed i numeri, ove opportuno, definenti lo sfondo, sul tutto poi stenderei uno "strato" di controlli dimensionati sulle caselle, canvas anch'essi, dato che devono poter disegnare le "bandierine", su questi ultimi applicherei il bind al calback che sulla base delle coordinate di cella scoprirebbero i "vuoti" ovvero le mine (con cessazione del gioco).

Non è un discorso troppo difficile ma nemmeno semplicissimo se non si ha pratica, presuppone delle conoscenze di base tutt'altro che "immediate".

[Edit] ... a pensarci bene, anche una "griglia" di label andrebbe bene, anzi, sarebbe più "semplice" da gestire, dato che possono contenere testo e mostrare immagini.
« Ultima modifica: Gennaio 23, 2020, 13:13 da nuzzopippo »

Offline Carmen DAgostino

  • python unicellularis
  • *
  • Post: 7
  • Punti reputazione: 0
    • Mostra profilo
Re:problema con onclick
« Risposta #2 il: Gennaio 23, 2020, 13:14 »
grazie del consiglio ho risolto, ma adesso ho un alto problema