Forum >> Principianti >> modulo Graphics RISOLTO

Pagina: 1 2 Avanti

Buongiorno ho un problema con l'esecuzione di un programma che ho
digitato come esercizio dal mio libro di testo che simula il lancio di dadi
il codice è il seguente

DIE_SIZE = 60


def main() :
from graphics import GraphicsWindow
canvas = configureWindow(DIE_SIZE * 7)
rollDice(canvas, DIE_SIZE)
while rollAgain() :
rollDIce(canvas, SIZE_DIE)

def configureWindow(winSize) :
win = GraphicsWindow(winSize, winSize)
canvas = win.canvas()
canvas.setBackground(0,128,0)
return canvas

def rollAgain() :
userInput = input(" ...... Q to quit")
if userInput.upper() == "Q" :
return False
else :
return True

def rollDice(canvas, size) :
canvas.clear()
xOffset = size
yOffset = size
for die in range (5) :
dieValue = randint(1,6)
drawDie(canvas, xOffset, yOffset, size, dieValue)
if die == 2 :
xOffset = size * 2
yOffset = size * 3
else :
xOffset = xOffset + size * 2

def drawDie(canvas, x, y, size, dieValue) :
dotSize = size // 5
offset1 = dotSize // 2
offset2 = dotSize // 2 * 4
offset3 = dotSize // 2 * 7

canvas.setFill("white")
canvas.setOutline("black")
canvas.setLineWidth(2)
canvas.drawRect(x, y, size, size)

canvas.setColor("black")
canvas.setLineWidth(1)

if dieValue == 1 or dieValue == 3 or dieValue == 5:
canvas.drawOval(x + offset2, y + offset2, dotsize, dotsize)
elif dieValue == 6 :
canvas.drawOval(x + offset1, y + offset2, dotSize, dotSize)
canvas.drawOval(x + offset3, y + offset2, dotSize, dotSize)
if dieValue >= 2 :
canvas.drawOval(x + offset1, y + offset1, dotSize, dotSize)
canvas.drawOval(x + offset3, y + offset3, dotSize, dotSize)
if dieValue >= 4 :
canvas.drawOval(x + offset1, y + offset3, dotSize, dotSize)
canvas.drawOval(x + offset3, y + offset1, dotSize, dotSize)

main ()

quando lo mando in esecuzione mi appare questo risultato

Traceback (most recent call last):
File "C:/Users/salvatore&fabio/Desktop/file python/rolldice.py", line 63, in <module>
main ()
File "C:/Users/salvatore&fabio/Desktop/file python/rolldice.py", line 5, in main
from graphics import GraphicsWindow
ModuleNotFoundError: No module named 'graphics'

come posso fare a risolverlo?
uso win10 e Python 3.6.3

grazie a chi mi risponderà




--- Ultima modifica di SalvCai in data 2018-01-08 16:59:40 ---
Ciao caro, prima di tutto buon anno. :party:

Ti ricordo che quando metti del codice Python sul forum, essendo la sintassi un elemento portante del linguaggio, di utilizzare sempre il tasto code, che trovi subito prima della tavolozza dei colori in modalità inserimento testo, diciamo così, come vedi qui sotto.



Veniamo a noi, hai seguito questo per l'installazione del modulo?

Cya
Ciao Daniele grazie per la replica .... sono nuovo del mondo python e sto cercando nei ritagli di tempo professionali a lavorarci un po su .... ora sono fuori sede ma in serata proverò a reistallare python3 e vedere cosa succede ti terrò aggiornato.
Grazie ancora

Salvatore
Ah dimenticavo BUON ANNO A TE :party:
Ciao BUON ANNO A TUTTI,
ho il tuo stesso libro quindi sembra che quest'anno tu sia molto fortunato.
In quale cartella hai inserito il modulo graphics.py?

Ciao Daniele nonostante la procedura che mi hai indicato tu non riesco a far funzionare il codice, ma grazie del tuo supporto, cmq il modulo graphics l'ho inserito nella directory python36

Salvatore
>>> import sys
>>> sys.path
E' molto semplice risolvere il problema.
Devi inserire il modulo graphics in una delle cartelle che vengono visualizzate.
Una volta fatto questo purtroppo il programma non verrà eseguito perché devi correggere alcuni errori.
Non hai importato randint dal modulo random per esempio.
Poi hai commesso due errori di digitazione nel nome di variabili.
Inoltre il modulo graphics deve essere importato nelle prime righe del programma.
ciao questo è il codice ma io non trovo proprio il modo di farlo funzionare


DIE_SIZE = 60
from graphics import *


def configureWindow(winSize) :
    win = GraphWin("DADO",winSize, winSize)
    canvas = win.canvas()
    canvas.setBackground(0,128,0)
    return canvas

def main() :
    canvas = configureWindow(DIE_SIZE * 7)
    rollDice(canvas, DIE_SIZE)
    while rollAgain() :
        rollDIce(canvas, SIZE_DIE)

def rollAgain() :
    userInput = input(" ...... Q to quit")
    if userInput.upper() == "Q" :
        return False
    else :
        return True

def rollDice(canvas, size) :
    canvas.clear()
    xOffset = size
    yOffset = size
    for die in range (5) :
        dieValue = randint(1,6)
        drawDie(canvas, xOffset, yOffset, size, dieValue)
        if die == 2 :
            xOffset = size * 2
            yOffset = size * 3
        else :
            xOffset = xOffset + size * 2

def drawDie(canvas, x, y, size, dieValue) :
    dotSize = size // 5
    offset1 = dotSize // 2
    offset2 = dotSize // 2 * 4
    offset3 = dotSize // 2 * 7

    canvas.setFill("white")
    canvas.setOutline("black")
    canvas.setLineWidth(2)
    canvas.drawRect(x, y, size, size)

    canvas.setColor("black")
    canvas.setLineWidth(1)

    if dieValue == 1 or dieValue == 3 or dieValue == 5:
        canvas.drawOval(x + offset2, y + offset2, dotsize, dotsize)
    elif dieValue == 6 :
        canvas.drawOval(x + offset1, y + offset2, dotSize, dotSize)
        canvas.drawOval(x + offset3, y + offset2, dotSize, dotSize)
    if dieValue >= 2 :
        canvas.drawOval(x + offset1, y + offset1, dotSize, dotSize)
        canvas.drawOval(x + offset3, y + offset3, dotSize, dotSize)
    if dieValue >= 4 :
        canvas.drawOval(x + offset1, y + offset3, dotSize, dotSize)
        canvas.drawOval(x + offset3, y + offset1, dotSize, dotSize)

main ()


questo è ciò che ottengo in output sull'idle

Traceback (most recent call last):
  File "C:\Users\salvatore&fabio\Desktop\file python\rolldice.py", line 63, in <module>
    main ()
  File "C:\Users\salvatore&fabio\Desktop\file python\rolldice.py", line 12, in main
    canvas = configureWindow(DIE_SIZE * 7)
  File "C:\Users\salvatore&fabio\Desktop\file python\rolldice.py", line 7, in configureWindow
    canvas = win.canvas()
AttributeError: 'GraphWin' object has no attribute 'canvas'


sai dirmi come fare adesso sono proprio curioso di vedere come va .... 
ho controllato il modulo graphics è nella directory dove deve essere leggendo
anche la documentazione

Grazie per il tuo tempo
Salvatore
Intanto correggi questa riga
win = GraphWin("DADO",winSize, winSize)
poi ti ho detto di importare randint dal modulo random.
Infine devi correggere due errori di digitazione del nome di variabili.
Controlla attentamente, non è facile individuarli.

scusa avevo sbagliato copia e incolla
buona giornata
S!


Pagina: 1 2 Avanti



Esegui il login per scrivere una risposta.