Kodlama Referansı
AugeLab'da sağlanan örnek özel blok scripti:
Bootstrap Aşaması
Zorunlu İçe Aktarmalar
Örnek script her zaman belirli modüllerin içe aktarılmasıyla başlar. studio.custom_block import *
, blokunuzda kullanmanız için gerekli süper sınıfları, widget'ları ve yöntemleri içe aktarır. Bu satır, tüm sınıf tanımlamaları için zorunludur.
Topluluk Modüllerinin İçe Aktarılması
Burada, en çok kullanılan iki kütüphane zaten sizin için içe aktarılmak üzere ayarlanmıştır. Özel bloklarınızda OpenCV ve numpy kütüphanelerini kullanabilirsiniz.
Özel kütüphaneleri de İçe Aktar Paket Penceresi ile yükleyerek içe aktarabilir ve özel statik değişkenleri ayarlayabilirsiniz.
AugeLab Studio'da sağlanan tüm bloklar çapraz platform uyumludur. Ancak, topluluk modüllerinin kullanılması bu uyumu tehlikeye atabilir.
Sınıf Tanımı
Sınıfınızın adı, Blok Adı metin düzeninde sağladığınız başlığa bağlı olarak belirlenir. Bu bölümde istediğiniz gibi nitelikler veya yöntemler tanımlayabilirsiniz.
Sınıf Nitelikleri-Yöntemleri
`Block.op_code: str`
op_code
, özel bloğunuz için benzersiz bir tanımlayıcı dizesini tanımlar. Özel bloğunuzu yüklemek için, kendinize özel bir blok adı seçmelisiniz.
`Block.tooltip: str`
tooltip
, kullanıcıların özel bloklar üzerinde fare ile gezindiğinde ipucu gösterilmesini sağlar.
`Block.input_sockets: list[SocketType]`
input_sockets
niteliği soket türlerini depolar. Her soket türü, Giriş Soketi veya Çıkış Soketi bölümünde sizin için otomatik olarak oluşturulur.
SocketType
, iki argüman alır:
SocketType
listesi aşağıda görülebilir:
[
ImageAny
]: ImageRGB | ImageGray
[
ImageRGB
]: npt.NDArray[np.uint8] # [N, N, 3]
[
ImageGray
]: npt.NDArray[np.uint8] # [N, N]
[
Integer
]: int
[
Float
]: int
[
Number
]: float | int
[
Boolean
]: bool
[
String
]: str
[
Generic
]: object
[
Shape
]: list[list[int, int], ...]
[
Pixel
]: tuple[int] | tuple[int, int, int]
[
Point
]: tuple[int, int]
`Block.output_sockets: list[SocketType]`
Bu bölümde de Giriş soketleri üzerindeki aynı kurallar geçerlidir.
`Block.param: dict[str, Component]`
Bu özellik, blok bileşenlerinizi ve etkileşimli widget'ları benzersiz adlarıyla tutar. Kullanabileceğiniz birkaç bileşen vardır:
`Block.input: dict[str, object]`
input
özelliği, özel bloğunuza veri aktarımı için dinamik bir dict
'dir. Soket adları aracılığıyla giriş soketlerinizden veri alabilirsiniz.
`Block.output: dict[str, object]`
output
özelliği, özel bloğunuzdan veri dışarı aktarmak için dinamik bir dict
'dir. Çıkış soketlerinize veri yerleştirirken benzersiz soket adlarını kullanabilirsiniz.
`Block.register_resource(name: str = '', path: str = '') -> str`
Yolları kaydeder ve bunları otomatik olarak senaryo dosyasına kaydeder.
Genellikle, düz yollar kullanmak, senaryo dosyalarını farklı bilgisayarlar arasında taşırken sorun yaratabilir. Ancak, otomatik kaynak yönetimi kullanarak genel veya göreli yolları kullanabilirsiniz. Kaynağı senaryo dosyasından daha düşük bir yolda depolamak, scriptinizin doğru yolu almasına olanak tanır.
Argümanlar:
name: str
: Bir yolu ayırt etmek için sağlanan benzersiz ad.
path: str
: Kaydedilecek yol.
Döndürür:
path: str
: Kaydedilmiş yol.
Sağlanan yolu almak için get_resource
yöntemini kullanın.
`Block.get_resource(name: str = '') -> str`
Özel blok içindeki kaynak yöneticisine sağladığınız kaynağı almanıza olanak tanır.
Argümanlar:
name: str
: Bir yolu ayırt etmek için sağlanan benzersiz ad.
Döndürür:
path: str
: Kaydedilen yol.
Bir yolu kaydetmek için register_resource
yöntemini kullanın.
`Block.init(self)`
Bu bölüm, özel bir blok sürüklenip bırakıldığında, kopyalanıp yapıştırıldığında veya yeni bir senaryoda yüklendiğinde her seferinde gerçekleştirilir. Bu bölümde genellikle şunları yapmak önerilir:
Özel blok için kaynaklar yüklemek
Kullanılacak bileşenleri tanımlamak (metin girişleri, düğmeler vb.)
Çalışma zamanında değişen iç blok durumları.
`Block.run(self)`
Run yöntemi, AugeLab Studio'da bir senaryonun her adımında yürütülür. Özel bloklarınızın iç durumlarını, özel modülleri, sabitleri vb. kullanabilirsiniz.
Girişleri, süper Block
sınıfının sağladığı dinamik özellikleri kullanarak alabilir ve çıktılar gönderebilir, bileşenlerinizin yapılandırmalarını değiştirebilir ve doğru yürütme mantığını seçmek için bileşen durumunu okuyabilirsiniz.
`QAFileDialog`
QAFileDialog, kullanıcılara dosya yolu seçme diyaloğu sunan statik bir sınıftır:
`QAFileDialog.getOpenFileName(**kwargs)`
Argümanlar
caption: str = ''
: Dosya diyalog başlığının başlığı
directory: str = ''
: Diyalogun başlangıç dizini
filter: str = ''
: Filtrelenecek dosya adları, örneğin -> 'Görüntü Dosyaları (*.png *.jpg *.bmp)'
Döndürür
path:str
: Kullanıcı tarafından seçilen yol.
`QAFileDialog.getExistingDirectory`
Argümanlar
caption: str = ''
: Dosya diyalog başlığının başlığı
directory: str = ''
: Diyalogun başlangıç dizini
Döndürür
path:str
: Kullanıcı tarafından seçilen yol.
`add_block(My_Block.op_code, My_Block)`
Bu bölüm, Tasarımcı Penceresi tarafından otomatik olarak oluşturulur ve değiştirilmemelidir. Değiştirilmesi gerekiyorsa, blok adının sınıf adı ile ve op_code
ile aynı olduğundan emin olun.
Last updated