Forum >> Principianti >> ultima domanda sui cicli for in tkinter

Pagina: 1

ragazzi questo e il codice vorrei che ogni volta terminato un ciclo mi comparisse l'immagine con canvas e in background quindi contemporaneamente il suono corrispondente in questo caso si sente il suono ma non si apre tkinter con l immagine vorrei che facessero contemporaneamente di volta in volta



from PIL import ImageTk, Image
import os
import winsound
from gtts import gTTS
from Tkinter import *
import ImageTk, Image
import os
import requests
from gtts import gTTS
from bs4 import BeautifulSoup 
print (os.getcwd())

f = open ("giccchi.txt", "r")
g = f.read()
m = g.split(" ")
fiiinniestra = Tk()
fiiinniestra.geometry("1000x1000")
canvas = Canvas(fiiinniestra, width=200, height=200)
basewidth = 150
canvas.pack(side = TOP, expand = True, fill=BOTH)
im = Image.open("teo.jpg")
image = ImageTk.PhotoImage(im)
imagesprite = canvas.create_image(100, 80 , image = image)
for parrrola in m:
    if parrrola == "il":
        winsound.PlaySound("il.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "lo":
        winsound.PlaySound("lo.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "la":
        winsound.PlaySound("la.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "i":
        winsound.PlaySound("i.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
     if parrrola == "gli":
        winsound.PlaySound("gli.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "le":
        winsound.PlaySound("le.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "un":
        winsound.PlaySound("un.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "uno":
        winsound.PlaySound("uno.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "una":
        winsound.PlaySound("una.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "di":
        winsound.PlaySound("di.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "a":
        winsound.PlaySound("a.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "da":
        winsound.PlaySound("da.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "in":
        winsound.PlaySound("in.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "con":
        winsound.PlaySound("conn.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "su":
        winsound.PlaySound("su.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "per":
        winsound.PlaySound("per.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "tra":
        winsound.PlaySound("tra.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "fra":
        winsound.PlaySound("fra.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Il":
        winsound.PlaySound("il.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Lo":
        winsound.PlaySound("lo.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "La":
        winsound.PlaySound("la.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "I":
        winsound.PlaySound("i.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Gli":
        winsound.PlaySound("gli.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Le":
        winsound.PlaySound("le.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Un":
        winsound.PlaySound("un.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Uno":
        winsound.PlaySound("uno.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Una":
        winsound.PlaySound("una.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Di":
        winsound.PlaySound("di.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "A":
        winsound.PlaySound("a.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Da":
        winsound.PlaySound("da.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "In":
        winsound.PlaySound("in.wav", winsound.SND_ASYNC)
    if parrrola == "Con":
        winsound.PlaySound("conn.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Su":
        winsound.PlaySound("su.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Per":
        winsound.PlaySound("per.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Tra":
        winsound.PlaySound("tra.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()
    if parrrola == "Fra":
        winsound.PlaySound("fra.wav", winsound.SND_ASYNC)
        fiiinniestra.mainloop()

Guarda, davvero.

Lascia stare tkinter. Il tuo problema non è che non hai capito tkinter, il tuo problema è che non hai capito come funziona un ciclo for e come funziona una condizione if. E poi sì, certo: non hai capito *neppure* come funziona tkinter, ma non è questo adesso il tuo problema.

Il tuo codice è del tutto equivalente a questo:

def disegna_un(x):
    print("questo e' il disegno di un", x)

animali = ('cane', 'gatto', 'coniglio')

## io vorrei che a ogni ciclo lui 
##   a) scrivesse il nome dell'animale
##   b) disegnasse l'animale
## pero'...

disegna_un('cane')
for animale in animali:
    if animale == 'cane':
        print('cane!')
    if animale == 'gatto':
        print('gatto!')
    if animale == 'coniglio':
        print('coniglio!')

## ... pero' non funziona... chissa perche'...


Ora, a parte l'uso assurdo di "if" quando stai ciclando su una lista. E a parte questo modo veramente, ma veramente assurdo che hai di dare un nome alle variabili ("fiiinniestra", "parrrola", "giccchi.txt"... ma che cos'è, hai un problema alla tastiera? Pesti le dita a caso sui tasti? Hai un gatto dispettoso?).


Ma qui il problema è che non hai proprio il senso di come funziona il flusso del programma nel ciclo for.


Davvero, è un consiglio di cuore, in amicizia. Lascia perdere tkinter. Lascia perdere request. Lascia perdere beautifulsoup. Lascia perdere PIL, la sintesi vocale... Lascia perdere tutto. Riparti dalle basi, segui un buon libro passo-passo, e non voltare una pagina finché non sei sicuro di averla compresa fino in fondo.




E perché non funziona magari le tue risposte mi possono dare insegnamenti. Dovrei creare una funzione per il ciclo for per poi passarla a tkinter??
DIMENTICA tkinter! Ma in che lingua hai bisogno che te lo si dica perché tu comprenda questo concetto? Concentrati piuttosto sul far funzionare l'esempio che ti ho dato (e che naturalmente non hai neanche letto). Sai, il problema di "insegnare", è che dall'altra parte si dovrebbe essere consapevoli che "imparare" non è una cosa automatica. E' una cosa lenta, progressiva, richiede fatica.
Nel tuo esempio nei commenti ce scritto che non funziona e poi io non sono un esperto di programmazione volevo soltanto avere delle delucidazioni a parte la domanda di prima sul .jpg io volevo solo sapere cos è che non va nel programma e me lo potresti spiegare benissimo in poche parole. A volte non servono solo libri per imparare
Ok, NON hai letto il mio esempio, NON l'hai provato, NON hai cercato di capire perché non funziona, NON hai cercato di capire che relazione ha con il tuo problema.


Adesso ripeto (ed è l'ultima volta, promesso): guarda quell'esempio (lo so, è uno sforzo), copialo (lo so, è uno sforzo), fallo girare (lo so, è uno sforzo), vedi che output genera (lo so, è uno sforzo), capisci la differenza tra l'output che genera e quello che dovrebbe generare (lo so, è uno sforzo), correggilo in modo che generi l'output giusto (lo so, è uno sforzo), posta qui l'esempio corretto (lo so, è uno sforzo).


Lo so, lo so, e mi dispiace davvero: ma il fatto è che sempre, per imparare, occorre fare fatica.

Snoop non so tutto quel codice se ti serve o meno e non conosco tutti quei moduli che hai importato ma leggendo il codice che hai postato se ho compreso bene cosa ti serve fare puoi provare con queste 8 righe, ho fatto una prova e "credo" che dovrebbe funzionare per il tuo scopo, per tutti gli altri moduli non ne ho idea quindi passo

ps ovviamente devi indentare il codice (non so come farlo nel forum) ed i file .wav devono stare nella stessa cartella del file .py


import re
f = open ("giccchi.txt", "r")
g = f.read()
m=re.split(r'[" ""\n"]+',g)


import winsound
for parrrola in m:
print(parrrola)
winsound.PlaySound(parrrola+".wav", winsound.SND_FILENAME)

Questa e la soluzione?
https://youtu.be/h3qSHIDgvCU

Cioè inserire il ciclo for in una funzione per poi inserirla nella finestra??


Pagina: 1



Esegui il login per scrivere una risposta.