İçindekiler

Ağaç Görünümü

DiaTreeWidget, formlarda kullanıcıların hiyerarşik (ağaç) yapıda veri görüntüleyebileceği ve seçim yapabileceği çok kolonlu bir ağaç nesnesidir. Kategori-alt kategori, departman-hiyerarşisi, menü ağacı gibi parent-child ilişkili listelerde kullanılır. Kolon başlıkları tanımlanabilir; veri text ve children içeren liste/dict veya JSON string olarak atanabilir. Satırlar açılıp kapanabilir (expand/collapse); Liste Görünümünden farkı hiyerarşi ve buna özel aksiyonlardır (Item Expanded / Item Collapsed).

Özellikler

Adı Default Değerleri Amacı
🆔 Nesne ID diaTreeWidget_1 Örn: kategoriAgaci Nesneye atanacak benzersiz kimliktir. Süreç tasarımında ve kod tarafında bu ID üzerinden erişim sağlanır.
🏷️ Değer - JSON veri veya boş Ağacın başlangıç verisi. “Veri” alanı ile de set edilebilir.
🎨 Arka Plan Rengi ⚪ Beyaz Renk seçici Ağaç arka plan rengini belirler.
✒️ Yazı Rengi ⚫ Siyah Renk seçici Hücre metin rengini belirler.
🔤 Font Helvetica Sistem fontları Ağaç yazı tipografisini belirler.
🔠 Font Boyu 12 pt Sayısal değer Yazı boyutunu ayarlar.
🔡 Font Tipi Normal Koyu, İtalik, Altı Çizgili, Üstü Çizgili Metin stilini belirler.
📋 Kolonlar - Liste (detay aşağıda) Ağaç kolon başlıklarının tanımı. Her kolon için alan adı / başlık tanımlanır.
📄 Veri - JSON veya liste Ağacın başlangıç verisi. Hiyerarşik yapı: text, children, isteğe bağlı _key / _keys, icon / icons.
💬 İpucu - Serbest metin Ağaç üzerine gelindiğinde görünen açıklama.
👁️ Gösterim Görünür Görünür / Gizli Nesnenin formda görünüp görünmeyeceğini belirler.
🔒 Salt Okunur Hayır Evet / Hayır Ağaç sadece okunabilir olur; seçim yapılamaz (widget devre dışı).
🎭 Stil - CSS sınıfı Özel CSS sınıfları ile görsel stil uygulanabilir.
🖱️ Aksiyon (Item Clicked) - Olay bağlanabilir Bir düğüme tek tıklandığında tetiklenir.
🖱️ Aksiyon (Item Double Clicked) - Olay bağlanabilir Bir düğüme çift tıklandığında tetiklenir.
🖱️ Aksiyon (Item Changed) - Olay bağlanabilir Seçili düğüm değiştiğinde tetiklenir.
🖱️ Aksiyon (Item Expanded) - Olay bağlanabilir Bir düğüm açıldığında (expand) tetiklenir.
🖱️ Aksiyon (Item Collapsed) - Olay bağlanabilir Bir düğüm kapatıldığında (collapse) tetiklenir.

Ağaç Görünümü, parent-child satırlarla hiyerarşik veri gösterir; getValue() seçili düğümün ilk kolon değerini döndürür.


📋 Kolonlar

Kolonlar özelliği, ağacın kolon yapısını tanımlar. “Kolonlar” butonuna tıklanarak açılan dialog üzerinden kolonlar eklenir veya düzenlenir. Kolon tanımı JSON formatındadır; her öğe label veya field içerebilir.


Kolon Alanları

Alan Zorunlu Açıklama
label / field Hayır Kolon başlığında görünen metin.
(JSON öğesi) - Her öğe bir kolonu temsil eder; dict ise label veya field, string ise doğrudan başlık kullanılır.

Örnek Kolonlar JSON:

[{"field": "adi", "label": "Ad"}, {"field": "kodu", "label": "Kod"}]


📄 Veri Yapısı (setValue / Veri)

Ağaç verisi hiyerarşik olmalıdır. Her düğüm şu alanlara sahip olabilir:

Alan Zorunlu Açıklama
text Evet Kolon değerleri: liste (örn. [“Üst 1”, “Kod1”]) veya tek string.
children Hayır Alt düğümler listesi. Aynı yapıda (text, children…) tekrarlanır.
_key / _keys Hayır Satır anahtarı; getItemKey(item, column) ile okunur.
icon / icons Hayır Düğüm ikonu: base64 string veya URL (icon ilk kolon, icons kolon indeksine göre dict).

Örnek Veri (JSON):

[
  {"text": ["Kategori A", "KAT-A"], "children": [
    {"text": ["Alt 1", "A1"]},
    {"text": ["Alt 2", "A2"], "children": [
      {"text": ["Alt 2.1", "A2.1"]}
    ]}
  ]},
  {"text": ["Kategori B", "KAT-B"]}
]

Düz liste de desteklenir: [“Satır1”, “Satır2”].


Fonksiyonlar

DiaTreeWidget nesnesi için kullanılabilir tüm fonksiyonlar aşağıda kategorize edilmiştir.


📝 Değer İşlemleri

📖 getValue()

🎯 Amaç Seçili düğümün ilk kolon metnini döndürür. Seçili yoksa None.

📥 Parametre Yok

📤 Dönüş str veya None

secili = diaTreeWidget_1.getValue()
if secili:
    print("Seçilen:", secili)

✏️ setValue()

🎯 Amaç Ağaca veri atar. Mevcut ağaç temizlenir ve yeni hiyerarşi eklenir.

📥 Parametre value: list (dict veya list satırlar, dict'te text ve children) veya JSON string

📤 Dönüş Yok

# Hiyerarşik dict listesi
veriler = [
    {"text": ["Kök 1", "K1"], "children": [
        {"text": ["Alt 1.1", "A1.1"]},
        {"text": ["Alt 1.2", "A1.2"]}
    ]},
    {"text": ["Kök 2", "K2"]}
]
diaTreeWidget_1.setValue(veriler)

# JSON string
diaTreeWidget_1.setValue('[{"text":["A","1"],"children":[]}]')

🗑️ clearValue()

🎯 Amaç Ağaçtaki tüm düğümleri temizler.

📥 Parametre Yok

📤 Dönüş Yok

diaTreeWidget_1.clearValue()


🆔 Kimlik ve Stil

Fonksiyon Açıklama
getId() Nesne ID'sini döndürür
setId(id) Nesne ID'sini değiştirir
setBackgroundColor(color) Arka plan rengi
getBackgroundColor() Arka plan rengini okur
setFontColor(color) Yazı rengi
getFontColor() Yazı rengini okur
setFontSize(size) Font boyutu
getFontSize() Font boyutunu okur
setFont(fontName) Font tipi
getFont() Font tipini okur
setBold(statu) Koyu yazı
setItalic(statu) İtalik yazı
setUnderline(statu) Altı çizgili yazı

🖱️ Aksiyonlar (Parametreler)

Item Clicked

Bir düğüme tek tıklandığında tetiklenir. item, column parametreleri kullanılabilir. getItemValue(item, column) metin; getItemKey(item, column) o kolondaki _key / _keys değerini döndürür.

Item Double Clicked

Bir düğüme çift tıklandığında tetiklenir. item, column, getItemValue, getItemKey kullanılabilir.

Item Changed

Seçili düğüm değiştiğinde tetiklenir. current, previous parametreleri (yeni ve önceki seçili düğüm). getItemValue(current, 0) ile seçili satırın metni okunabilir.

Item Expanded / Item Collapsed

Item Expanded: Bir düğüm açıldığında (genişletildiğinde) tetiklenir. Parametre: item (açılan düğüm). Item Collapsed: Bir düğüm kapatıldığında tetiklenir. Parametre: item (kapatılan düğüm). getItemValue(item, column) ve getItemKey(item, column) kullanılabilir.


🚀 Kullanım Örnekleri

Süreç çıktısından ağacı doldurma

# Hiyerarşik veriyi ağaca ata
param = getFormVariable("param")
kategoriler = param["kategori_agaci"]
if kategoriler:
    diaTreeWidget_1.setValue(kategoriler)

Item Clicked ile value kullanımı

# getItemValue ile value değerini al
seciliKod = getItemValue(current, 0) #kolon
txt_SeciliItem.setText(seciliKod)