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).
| 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 ö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.
| 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"}]
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”].
DiaTreeWidget nesnesi için kullanılabilir tüm fonksiyonlar aşağıda kategorize edilmiştir.
🎯 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)
🎯 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":[]}]')
🎯 Amaç Ağaçtaki tüm düğümleri temizler.
📥 Parametre Yok
📤 Dönüş Yok
diaTreeWidget_1.clearValue()
| 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ı |
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.
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)