23 svar
181 visningar
destiny99 behöver inte mer hjälp
destiny99 8059
Postad: 4 okt 10:07 Redigerad: 4 okt 10:18

rektangel uppgift

import tkinter as tk
def rectangle(pic,x_left,y_top,x_right,y_bottom,colour):
     for x in range(x_left,x_right):
          for y in range(y_top,y_bottom):
            rectangle()

 

 Hej!

Uppgiften är alltså att skapa en definierad funktion som heter rektangel och rektangel ska vara fylld. Jag skapade de parametrarna som man ska göra dvs image, x-koordinaten för vänstra hörnet, x-koordinaten för högra hörnet , y-koordinaten för vänstra respektive högra hörnet. Jag vill loopa igenom koordinaterna för x och y samt göra något med bilden men jag är liksom fast och är ganska ny i programmeringen så allt står bara still i huvudet på mig. 

farfarMats 1214
Postad: 4 okt 16:48

Du behöver inne i loopen anropa en metod eller funktion som sätter färg på en pixel.

destiny99 8059
Postad: 4 okt 16:50 Redigerad: 4 okt 16:50
farfarMats skrev:

Du behöver inne i loopen anropa en metod eller funktion som sätter färg på en pixel.

Jag vet inte vad en pixel innebär. Vad för metod ska jag anropa för att sätta färg på den där pixel och under vilken loop ska jag sätta den? 

farfarMats 1214
Postad: 4 okt 16:56

En pixel är en punkt på pappret eller skärmen.

Är inte så bekant med Python men vet att det finns ett otal subrutinbibliotek med färdiga rutiner för olika ändamål. Leta upp ett för grafik där finns det säkert. (Är det möjligen tkinter som du laddar in i inledningen.)

farfarMats 1214
Postad: 4 okt 17:00

"under vilken loop ska jag sätta den? "

Den innersta det är ju där du kommer till alla punkter i rektangeln

destiny99 8059
Postad: 4 okt 17:06
farfarMats skrev:

En pixel är en punkt på pappret eller skärmen.

Är inte så bekant med Python men vet att det finns ett otal subrutinbibliotek med färdiga rutiner för olika ändamål. Leta upp ett för grafik där finns det säkert. (Är det möjligen tkinter som du laddar in i inledningen.)

Ok jag letar upp grafik för python biblioteket så jag kan se hur en pixel ser ut på en geometrisk figur. 

destiny99 8059
Postad: 4 okt 17:07
farfarMats skrev:

"under vilken loop ska jag sätta den? "

Den innersta det är ju där du kommer till alla punkter i rektangeln

Det innersta är alltså for x in range(x_left,x_right): menar du?

thedifference Online 409
Postad: 4 okt 17:12 Redigerad: 4 okt 17:12

Nej, det är den yttre loopen. y-loopen är den inre för att hela den loopen körs för varje iteration av den yttre loopen.

Jag tror inte det är meningen att du ska leta upp ett bibliotek till. Tkinter bör räcka till detta. Sen vet jag inte om det är tänkt att du ska rita den pixel för pixel, när Tkinter har en funktion för att skapa rektanglar (men det var svårt att hitta nutida dokumentation).

Programmeringskurser handlar ibland om att man ska göra något på ett onödigt jobbigt sätt i utbildningssyfte, men det står ju inte i uppgiften att du ska gå pixelvis.

destiny99 8059
Postad: 4 okt 17:19 Redigerad: 4 okt 17:19
thedifference skrev:

Nej, det är den yttre loopen. y-loopen är den inre för att hela den loopen körs för varje iteration av den yttre loopen.

Jag tror inte det är meningen att du ska leta upp ett bibliotek till. Tkinter bör räcka till detta. Sen vet jag inte om det är tänkt att du ska rita den pixel för pixel, när Tkinter har en funktion för att skapa rektanglar (men det var svårt att hitta nutida dokumentation).

Programmeringskurser handlar ibland om att man ska göra något på ett onödigt jobbigt sätt i utbildningssyfte, men det står ju inte i uppgiften att du ska gå pixelvis.

Ok men var ska jag börja nu så att vi gör en grej i taget för att minska risken att jag blandar ihop allt?

teknikomatte 95
Postad: 4 okt 17:31

Du vill loopa igenom Tkinter fönstret, dvs variabeln SIZE:

from tkinter import *

SIZE = 500

def rectangle(img, x_topleft, y_topleft, x_bottomright, y_bottomright):
    for y in range(SIZE):
        for x in range(SIZE):
            #If x greater/equal to x_topleft and x smaller/equal to x_bottomright:
                #If If y greater/equal to y_topleft and y smaller/equal to y_bottomright:
                    img.put("#AAAAAA", (x,y))

Skriv om if-satserna med python kod.

I uppgiften får du en main funktion som är given som följande, använd den.

def main():
    """Create your image and call your functions inside this function."""
    window = Tk()
    canvas = Canvas(window, width=SIZE, height=SIZE, bg="#000000")
    canvas.pack()
    img = PhotoImage(width=SIZE, height=SIZE)
    canvas.create_image((SIZE / 2, SIZE / 2), image=img, state="normal")
    rectangle(img, 200,200,400,400)
    mainloop()

if __name__ == '__main__':
    main()
destiny99 8059
Postad: 4 okt 17:42 Redigerad: 4 okt 17:44
teknikomatte skrev:

Du vill loopa igenom Tkinter fönstret, dvs variabeln SIZE:

from tkinter import *

SIZE = 500

def rectangle(img, x_topleft, y_topleft, x_bottomright, y_bottomright):
    for y in range(SIZE):
        for x in range(SIZE):
            #If x greater/equal to x_topleft and x smaller/equal to x_bottomright:
                #If If y greater/equal to y_topleft and y smaller/equal to y_bottomright:
                    img.put("#AAAAAA", (x,y))

Skriv om if-satserna med python kod.

I uppgiften får du en main funktion som är given som följande, använd den.

def main():
    """Create your image and call your functions inside this function."""
    window = Tk()
    canvas = Canvas(window, width=SIZE, height=SIZE, bg="#000000")
    canvas.pack()
    img = PhotoImage(width=SIZE, height=SIZE)
    canvas.create_image((SIZE / 2, SIZE / 2), image=img, state="normal")
    rectangle(img, 200,200,400,400)
    mainloop()

if __name__ == '__main__':
    main()

Den där koden som är def main, är det den som dicander har skapat som vi ska använda? Den är ovanför min min kod 

Laguna Online 30683
Postad: 4 okt 18:20

Nu svarar jag inte på din senaste fråga, men jag tror det är meningen att du ska hitta ett sätt att rita en fylld rektangel, och det behövs nog bara ett par rader för det, eller kanske en enda.

Pixel betyder "picture element". Det är som andra skriver en enstaka punkt, som man ger en viss färg.

destiny99 8059
Postad: 4 okt 18:32 Redigerad: 4 okt 18:32
Laguna skrev:

Nu svarar jag inte på din senaste fråga, men jag tror det är meningen att du ska hitta ett sätt att rita en fylld rektangel, och det behövs nog bara ett par rader för det, eller kanske en enda.

Pixel betyder "picture element". Det är som andra skriver en enstaka punkt, som man ger en viss färg.

Tack för förklaringen! Så jag ska alltså rita en picture elememt som gör så att rektangel får en viss färg tex blå, svart osv? 

Jo jag vet att jag ska rita en fylld  rektangel men det kan vara klurigt att fortsätta  efter man definierat funktionen rektangel och ha sen parametrar som uppgiften pratar om.  

teknikomatte 95
Postad: 5 okt 09:37
destiny99 skrev:
teknikomatte skrev:

Du vill loopa igenom Tkinter fönstret, dvs variabeln SIZE:

from tkinter import *

SIZE = 500

def rectangle(img, x_topleft, y_topleft, x_bottomright, y_bottomright):
    for y in range(SIZE):
        for x in range(SIZE):
            #If x greater/equal to x_topleft and x smaller/equal to x_bottomright:
                #If If y greater/equal to y_topleft and y smaller/equal to y_bottomright:
                    img.put("#AAAAAA", (x,y))

Skriv om if-satserna med python kod.

I uppgiften får du en main funktion som är given som följande, använd den.

def main():
    """Create your image and call your functions inside this function."""
    window = Tk()
    canvas = Canvas(window, width=SIZE, height=SIZE, bg="#000000")
    canvas.pack()
    img = PhotoImage(width=SIZE, height=SIZE)
    canvas.create_image((SIZE / 2, SIZE / 2), image=img, state="normal")
    rectangle(img, 200,200,400,400)
    mainloop()

if __name__ == '__main__':
    main()

Den där koden som är def main, är det den som dicander har skapat som vi ska använda? Den är ovanför min min kod 

Ja precis

destiny99 8059
Postad: 5 okt 19:34 Redigerad: 5 okt 19:41
from tkinter import*
SIZE=500
def rectangle(img,x_topleft,y_topleft,x_bottomright,y_bottomright):
     for x in range(SIZE):
          for y in range(SIZE):
            if x>=x_topleft and x<=x_bottomright:
                if y>=y_topleft and y<=y_bottomright:
                    img.put("#AAAAAA",(x,y))
            
def main():
    """Create your image and call your functions from here"""
    window = Tk()
    canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg="#000000")
    canvas.pack()
    img = PhotoImage(width=WIDTH, height=HEIGHT)
    canvas.create_image((WIDTH / 2, HEIGHT / 2), image=img, state="normal")
    rectangle(img,200,200,400,400)
    mainloop()
    if __name__ == '__main__':
        main() 

           
    sierpinski(img, "#ff00ff")
    random_shape(img, (0.8, 0.2), (0.97, 0.83), "#ff0000")
"""Do not change any code below this comment."""
mainloop()


if __name__ == '__main__':
    main() 


     

det verkar inte fungera att köra denna enligt dessa felmeddelanden

destiny99 8059
Postad: 5 okt 20:12

Det verkar som att den ritar en rektangel nu efter korrigering av if_name som var utanför def main. Men den ritar både triangel och rektangel samtidigt, ska den göra så? Se bild nedan.

teknikomatte 95
Postad: 5 okt 21:09
destiny99 skrev:

Det verkar som att den ritar en rektangel nu efter korrigering av if_name som var utanför def main. Men den ritar både triangel och rektangel samtidigt, ska den göra så? Se bild nedan.

Nej, du kallar på funktionen sierpinski, som ritar ut sierpinski triangeln.

destiny99 8059
Postad: 5 okt 22:17 Redigerad: 5 okt 23:39
teknikomatte skrev:
destiny99 skrev:

Det verkar som att den ritar en rektangel nu efter korrigering av if_name som var utanför def main. Men den ritar både triangel och rektangel samtidigt, ska den göra så? Se bild nedan.

Nej, du kallar på funktionen sierpinski, som ritar ut sierpinski triangeln.

Menar du att anropa sierpinski (triangel)?

teknikomatte 95
Postad: 6 okt 09:05
destiny99 skrev:
teknikomatte skrev:
destiny99 skrev:

Det verkar som att den ritar en rektangel nu efter korrigering av if_name som var utanför def main. Men den ritar både triangel och rektangel samtidigt, ska den göra så? Se bild nedan.

Nej, du kallar på funktionen sierpinski, som ritar ut sierpinski triangeln.

Menar du att anropa sierpinski (triangel)?

Ja, det är den du anropar. Det ska du inte göra

destiny99 8059
Postad: 6 okt 09:17 Redigerad: 6 okt 09:18
teknikomatte skrev:
destiny99 skrev:
teknikomatte skrev:
destiny99 skrev:

Det verkar som att den ritar en rektangel nu efter korrigering av if_name som var utanför def main. Men den ritar både triangel och rektangel samtidigt, ska den göra så? Se bild nedan.

Nej, du kallar på funktionen sierpinski, som ritar ut sierpinski triangeln.

Menar du att anropa sierpinski (triangel)?

Ja, det är den du anropar. Det ska du inte göra

Jag satte kommentar på rad 78 och då får jag denna bild. Jag har ingen aning hur man får bort röda grejen som står emellan och vet inte heller vad det är.

 

teknikomatte 95
Postad: 6 okt 09:19

Sätt en kommentar  på random_shape funktionen

destiny99 8059
Postad: 6 okt 09:25
teknikomatte skrev:

Sätt en kommentar  på random_shape funktionen

yes den är borta och då kom det bara upp den fyllda rektangeln.

teknikomatte 95
Postad: 6 okt 09:27 Redigerad: 6 okt 09:27

Bra använd nu samma metod för att lösa de andra uppgifterna. Tips: för ram, gör två rektanglar och för triangeln använd y=kx+m

destiny99 8059
Postad: 6 okt 09:32
teknikomatte skrev:

Bra använd nu samma metod för att lösa de andra uppgifterna. Tips: för ram, gör två rektanglar och för triangeln använd y=kx+m

Ok ska testa det. Tack!

Svara
Close