# Panel
Klassen "bpy.types.Panel" använder ni när ni skapar paneler till ert användargränssnitt.
*N-panelen* exempelvis består utav flera paneler som alla ärver ifrån denna klassen, men de kan även placeras på andra ytor som bland *Properties*.
## Skelett
```python
class MY_ADDON_PT_cool_panel(bpy.types.Panel):
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = "Crazy Add-on"
bl_label = "Cool Panel"
def draw(self, context):
layout = self.layout
```
Med `bl_space_type`, `bl_region_type`, `bl_category`, `bl_label` och `bl_context` beskriver ni vart någonstans panelen ska synas
* `bl_space_type` — Editor-typen panelen hör hemma i [🔗](https://docs.blender.org/api/current/bpy_types_enum_items/space_type_items.html#rna-enum-space-type-items)[💡](https://docs.blender.org/manual/en/latest/editors/index.html)
* `bl_region_type` — Ytan, inuti editorn, panelen ska placeras på [🔗](https://docs.blender.org/api/current/bpy_types_enum_items/region_type_items.html#rna-enum-region-type-items)[💡](https://docs.blender.org/manual/en/latest/interface/window_system/regions.html)
* `bl_category` — Kategorin panelen går under - om applicerbart (Valfri text)
* `bl_label` — Namnet på panelen (Valfri text)
För mer info se [Panel - Blender Python API](https://docs.blender.org/api/current/bpy.types.Panel.html)
# def draw(self, context):
En klass som skapar ett användargränssnitt kommer alltid att behöva en draw-metod.
Inuti klassens draw-metod beskrivs alla dess UI-element så som rader, kolumner, knappar osv.
För mer info se [UILayout - Blender Python API](https://docs.blender.org/api/current/bpy.types.UILayout.html)
**Exempelkod**
```python
# Label, Operator och Property
def draw(self, context):
layout = self.layout
scene = context.scene
layout.label(text="A text label", icon="MONKEY")
layout.operator("mesh.primitive_monkey_add")
layout.prop(scene, "use_gravity")
```
```python
# Kolumner - Vol. 1
def draw(self, context):
layout = self.layout
col = layout.column(align=True)
col.label(text="Label 1")
col.operator("mesh.primitive_cone_add")
col.separator()
col.label(text="Label 2")
col.operator("mesh.primitive_torus_add")
```
```python
# Kolumner - Vol. 2
def draw(self, context):
layout = self.layout
row = layout.row()
# Både kolumner placeras horisontellt på samma rad
col = row.column(align=True)
col.label(text="Column 1")
col.operator("mesh.primitive_cone_add")
col = row.column(align=True)
col.label(text="Column 2")
col.operator("mesh.primitive_torus_add")
```
```python
# Simpel Image Preview
# (Har personligen inte hittat någon smidigare metod för detta)
def draw(self, context):
layout = self.layout
image = bpy.data.images["my_image"]
icon_id = image.preview.icon_id
layout.template_icon(icon_value=icon_id, scale=10)
```