#! /usr/bin/env python
# -*- coding: Utf-8 -*-

from Tkinter import *
from math import pi, sin, cos

class Canon:
    """Ágyúrajz"""
    def __init__(self, boss, x, y):
        self.boss = boss            # a vászon hivatkozása
        self.x1, self.y1 = x, y     # az ágyú forgástengelye
        # az ágyúcsövet vízszintesre rajzolja a kezdéshez :
        self.lagyucso = 50          # ágyúcső hossza
        self.x2, self.y2 = x + self.lagyucso , y
        self.cso = boss.create_line(self.x1, self.y1, self.x2, self.y2,
                                     width =10)
        # utána az ágyú testét felülre rajzolja :
        r = 15                      # a kör sugara 
        boss.create_oval(x-r, y-r, x+r, y+r, fill='blue', width =3)
    
    def iranyzas(self, angle):
        "az ágyúcső szögének kiválasztása"
        # rem : az <angle> paramétert stringként kapja.
        # valós számmá kell alakítani, utána radiánná :
        self.angle = float(angle)*2*pi/360      
        self.x2 = self.x1 + self.lagyucso*cos(self.angle)
        self.y2 = self.y1 - self.lagyucso*sin(self.angle)
        self.boss.coords(self.cso, self.x1, self.y1, self.x2, self.y2)
        
if __name__ == '__main__':
    # kód a Canon osztály tesztelésére: 
    f = Tk()
    can = Canvas(f,width =250, height =250, bg ='ivory')
    can.pack(padx =10, pady =10)
    c1 = Canon(can, 50, 200)

    s1 =Scale(f, label='Dőlésszög', from_=90, to=0, command=c1.iranyzas)
    s1.pack(side=LEFT, pady =5, padx =20)
    s1.set(25)                          # kezdő szög

    f.mainloop()