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.
Du behöver inne i loopen anropa en metod eller funktion som sätter färg på en pixel.
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?
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.)
"under vilken loop ska jag sätta den? "
Den innersta det är ju där du kommer till alla punkter i rektangeln
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.
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?
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.
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?
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()
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
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.
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.
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
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
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.
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.
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)?
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
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.
Sätt en kommentar på random_shape funktionen
teknikomatte skrev:Sätt en kommentar på random_shape funktionen
yes den är borta och då kom det bara upp den fyllda rektangeln.
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
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!