Re
Szóval a lényegre térek..
Adott egy feladat:
A « Vonalat rajzol » gombra kattintva a
vásznon megjelenik egy új, színes vonal, ami
minden alkalommal elhajlik az előzőtől.
Ha a « Más szín » gombra kattintunk, akkor
egy véges színkészletből véletlenszerűen egy új színt választ a script. Ez lesz a következő egyenes
színe.
A « Kilép » gomb az alkalmazás befejezésére és az ablak zárására való.
És adott a megoldás:
from Tkinter import *
from random import randrange
# --- az eseménykezel függvények definíciója : --ő -
def drawline():
global x1, y1, x2, y2, color
can1.create_line(x1,y1,x2,y2,width=2,fill=color)
# a koordináták módosítása a következő egyenes számára :
y2, y1 = y2+10, y1-10
def changecolor():
global color
pal=['purple','red','blue','orange','yellow']
c = randrange(8) # => véletlenszám generálása 0 és 7 között
color = pal[c]
#------ Főprogram -------
# a következő változókat globális változókként használjuk :
x1, y1, x2, y2 = 10, 190, 190, 10 # az egyenes koordinátái
color = 'dark red' # az egyenes színe
# A fő-widget létrehozása ("master") :
abl1 = Tk()
# a "slave" widget-ek létrehozása :
can1 = Canvas(abl1,bg='dark grey',height=500,width=650)
can1.pack(side=LEFT)
gomb1 = Button(abl1,text='Kilép',command=abl1.quit)
gomb1.pack(side=BOTTOM)
gomb2 = Button(abl1,text='Vonalat rajzol',command=drawline)
gomb2.pack()
gomb3 = Button(abl1,text='Más szín',command=changecolor)
gomb3.pack()
abl1.mainloop() # eseményfogadó indítása
abl1.destroy()
Rendben, értem is a feladatot, de a köv. feladat azt kéri, hogy egy módosítás után a vonalak, amiket ezután a vászonra rajzol vízszintes és függőlegesek legyenek.
Azt tudom, hogy az x1, x2, y1, y2 írja le a koordinátákat, de nem értem a logikát, hogy miszerint befolyásolja a függvények közti szöget.. ezért kérem hogy valaki magyarázza el..
remélem, hogy eléggé érthetően írtam le amit nem értek..
Tudom, hogy ostoba kérdés és bocsánat a hosszú tartalomért, de nem szeretném ennyiben hagyni a dolgot, mert a többi feladat is erre épül..
Előre is köszönöm..
egy kezdő Pythonozó..
- 1530 megtekintés
Hozzászólások
bocs de a tabulátorok kiszürődtek..
- A hozzászóláshoz be kell jelentkezni
# a koordináták módosítása a következő egyenes számára :
y2, y1 = y2+10, y1-10
Az egyenes kezdőpontjának y koordinátáját 10 ponttal csökkenti, a végpont y koordinátáját pedig 10 ponttal növeli minden egyes "rajzol" gombnyomásra. Függőleges vonal rajzolásához (k,y1) kezdő és (k,y2) végpont, vízszintes vonalhoz pedig (x1,l) (x2,l) végpontok szükségesek.
- A hozzászóláshoz be kell jelentkezni
igen, ez eddig világos.. de én azt nem értem, hogy a
x1, y1, x2, y2 - 10, 190, 190 ,10 mit jelent?
- A hozzászóláshoz be kell jelentkezni
Van egy elméletem :)
Tegyük fel, hogy ismert a két vége az egyenesnek.. Nah akkor ez lesz a A(x1,y1) B(x2,y2) ?
- A hozzászóláshoz be kell jelentkezni
Igen, pontosan így van. Az (x1, y1) koordináták a kezdőpontot, az (x2,y2) koordináták a végpontot határozzák meg.
- A hozzászóláshoz be kell jelentkezni
x1, y1, x2, y2 = 10, 190, 190, 10
x1, x2, y1, y2 globális változók, értékük a fenti csoportos értékadás után:
x1=10
y1=190
x2=190
y2=10
- A hozzászóláshoz be kell jelentkezni
Ehh.. igen azt tudom, hogy változók.. de engem úgy érdekelnek mint kordináták... ennél akadtam el...
Felrajzoltam egy papirra, és most felfedeztem a rendszert az egészben..
Adott egy koordinátarendszer ami jelen esetben a vászonon van...
Az egyenesnek van két pontja.. az egyik A(x1,y1) a másik A`(x2,y2) ...
Nah, és majd az y1 csökken 10 el az y2 növekszik.. gondolom így fog megváltozni az egyenes...
A következő kérdések amik még nem tiszták:
A vásznon hogy is van ez a koordinátarendszer? Hol helyezkedik el, és mi a mértékegysége (tipp: pixel?)
- A hozzászóláshoz be kell jelentkezni
Itt keletkezik a vászon:
can1 = Canvas(abl1,bg='dark grey',height=500,width=650)
Itt pedig a vonal:
can1.create_line(x1,y1,x2,y2,width=2,fill=color)
A vászon tehát 650 pixel széles, és 500 pixel magas (legalábbis, míg át nem méretezed az ablakot).
A bal felső sarok a (0,0), a jobb alsó pedig a (650,500).
- A hozzászóláshoz be kell jelentkezni
Ertem, igy mar tiszta minden..
koszonom!
Ha vmi lesz meg akkor jelentkezek :>
Megegyszer kosz mindenkinek a segitseget...
- A hozzászóláshoz be kell jelentkezni