Python- potrebujem majhno pomoč
 
chipyy 15. jan 2013 10:39:11 Pridružen od:
19. maj 2012
33 objav
4 53 0
#1

Na faksu imamo za narediti domačo nalogo:



Uporabi grafično knjižico TKinter v Pythonu in izdelaj program, ki bo predstavil zaporedje

fibonnacijevih stevil v obliki grafičnih vzorcev. Uporabi svojo domišljijo in v razmerju vrste, ali

njene kombinacije (zlati rez...) na Canvas z velikostjo 800x600 razporedi vsaj 100 različnih

elementov v 12 različnih barvah, ki naj izhajajo iz Newtnovega barvnega kroga. Pri tem uporabi

osnovne metode razreda Canvas (linija, krog, kvadrat, tekst).



Za to nalogo uporabljamo knjižni TkInter, okno, elemente in da se mi 100 izrišejo tudi znam naredit, zanima me samo kako bi to izpeljav z barvami?


všeč(0) ni všeč(0) spam(0)
 
cyber 16. jan 2013 07:21:40 Pridružen od:
2. dec 2007
536 objav
750 76 10
všeč(1) ni všeč(0) spam(0)
 
chipyy 16. jan 2013 16:37:01 Pridružen od:
19. maj 2012
33 objav
4 53 0
#3

from Tkinter import*



root=Tk()



okno=Canvas(root, width="800", height="600")

okno.pack()

x1=50

y1=15

x2=100

y2=15

x3=125

y3=45

x4=140

y4=75



def main():



n = 15

fibonacci(n)



def fibonacci(n):

a,b = 0,1

for i in range(0,n):


okno.create_line(x1+a,y1*a,x2+a,y2*a, fill="red")
okno.create_rectangle(x3+a,y3,x4+a,y4, fill="red")
a,b, = b,a+b

main()

root.mainloop()


všeč(0) ni všeč(0) spam(0)
 
chipyy 16. jan 2013 16:38:03 Pridružen od:
19. maj 2012
33 objav
4 53 0
#4

To je koda, sam zdej mi ni jasno kam nj kam vstavm :D


všeč(0) ni všeč(0) spam(0)
 
jankoM 16. jan 2013 20:47:33 Pridružen od:
25. sep 2007
615 objav
253 7 2
#5

PyTk sprejema za barve tudi hex rgb, kot HTML na primer.. zdej moraš nekako sproti računat barve "Newtnovega barvnega kroga" (nisem gledal kaj je to) in jih pretvarjat v ta zapis. ter vstavljat tam v loopu.. drug najbrž manj zaželjen način je da barve vnaprej izračunaš ali nekje najdeš in vstaviš v nek list [ ... ] in potem izbiraš iz njega.



..create_line(0, 0, 50, 20, fill="#476042", width=3)


všeč(0) ni všeč(0) spam(0)
 
chipyy 17. jan 2013 10:06:16 Pridružen od:
19. maj 2012
33 objav
4 53 0
#6

to da sam izbiraš ni vredi, vse more sam program nardit :D


všeč(0) ni všeč(0) spam(0)
 
cyber 17. jan 2013 12:09:52 Pridružen od:
2. dec 2007
536 objav
750 76 10
#7

Recimo:


def fibonacci(n):
hue = 0.6
for i in range(0,n):
r, g, b = (int(i*255) for i in colorsys.hsv_to_rgb(hue,0.8,0.8))
hue = hue+0.11-1 if hue+0.11>1 else hue+0.11

okno.create_line(0, 0, 50, 20, fill="rgb(%s,%s,%s)" % (r,g,b), width=3)
okno.create_rectangle(x3+a,y3,x4+a,y4, fill="red")

"hue" pač nastaviš kakor želiš vrednost je od 0 do 1, pomeni pa 360 stopinj.



0.8 vrednosti sta 1. "saturation" 2. "value, te pač nastaviš kakor želiš, vrednosti od 0 do 1, pomenijo pa 0% - 100%.



Tudi inkrement (0.11) pač nastaviš poljubno. Ta primer sam uporabljam pri izrisu grafov, kjer je želja čimbolj različne "žive" barve.



Drugače pa si lahko z Photoshop-om recimo pomagaš, tako da odpreš color picker, in izbereš "HSV" pa spreminjaš vrednosti, da boš videl kako to naj bi zgledalo potem.


všeč(1) ni všeč(0) spam(0)
 
cyber 17. jan 2013 12:34:23 Pridružen od:
2. dec 2007
536 objav
750 76 10
#8

Evo sem probal celotni primer in popravil v tole:


import colorsys
from Tkinter import *

root=Tk()

okno=Canvas(root, width="800", height="600")
okno.pack()
x1=50
y1=15
x2=100
y2=15
x3=125
y3=45
x4=140
y4=75

def RGBToHTMLColor(rgb_tuple):
""" convert an (R, G, B) tuple to #RRGGBB """
hexcolor = '#%02x%02x%02x' % rgb_tuple
# that's it! '%02x' means zero-padded, 2-digit hex values
return hexcolor

def main():
n = 15
fibonacci(n)

def fibonacci(n):
a,b = 0,1
hue = 0.6
for i in range(0,n):
c = tuple(int(i*255) for i in colorsys.hsv_to_rgb(hue,0.8,0.8))
hue = hue+0.11-1 if hue+0.11>1 else hue+0.11
okno.create_line(x1+a,y1*a,x2+a,y2*a, fill=RGBToHTMLColor(c))
okno.create_rectangle(x3+a,y3,x4+a,y4, fill=RGBToHTMLColor(c))
print a,b
a,b, = b,a+b

main()
root.mainloop()
všeč(2) ni všeč(0) spam(0)
 
chipyy 17. jan 2013 18:09:04 Pridružen od:
19. maj 2012
33 objav
4 53 0
#9

Hvala ti majstore, dela ko urca... Za nagrado dobiš všečke pa za pir sm dovžn XD


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se