- Mesaj
- 11.941
- Çözümler
- 567
- Beğeni
- 13.659
- Puan
- 5.915
- Ticaret Puanı
- 2
Merhaba arkadaşlar,
Bugün anlatacağım konu ileri düzey arkadaşlar içindir. Kendi sistemlerini kodlayabilen, python kodlarını anlayabilenlere yöneliktir.
Bu konumuzda bir pencereye başka bir pencereyi nasıl bağlayabileceğimizi anlatacağım.
Bunun artıları şu şekilde;
Mesela OrnekWindow.py adında bir dosyamız olsun. Bunun uiscript ile gerekli boyutunu filan ayarladık. Bunu anlatmıyorum tabiki.
Daha sonra 2 tane class olduğunu varsayalım. Bunların birisi AnaPencere diğeri AltPencere. Örnek kodlar;
Gördüğünüz gibi basit bir pencere başlatacısı kullandık. Sizlere bu konuda python ile pencere oluşturmayı anlatmıyorum. Pencereleri birbirine bağlama yöntemini anlatıyorum.
Daha sonra LoadWindow fonksiyonuna scriptten gelen verileri değişkenlere filan atıyorsunuz. Bunu geçiyoruz.
Bizim ilgileneceğimiz kısım şu;
Burada fark ettiyseniz. AltPencereWindow'u bir değişkene atadım. Fakat bunu atarken ana penceremizin verileri bulunduğu bir self gönderdik. Eğer bağlamak istemeseydik. Şöyle yapardık.
Daha sonra basit bir AltPencereWindow sınıfını oluşturalım.
Gördüğünüz gibi. AltPencereWindow sınıfını otomatik çalıştıran __init__ fonksiyonuna wndAnaPencere diye bir şey ekledim. Bunun sebebi biz AnaPencere'de AltPencereWindow sınıfını çağırırken AnaPencere'nin verilerini gönderiyoruz. AltPencerede o verileri alıyor.
Buradaki self tabiri. AltPencereWindow'daki __init__ fonksiyonuna wndAnaPencere değişkenine gidiyor. Zaten konuya bonus olarak şu kodu da ekledim.
Bu eğer ki kullanıcı bir şekilde AnaPencere'yi açmadan AltPencereyi açmaya çalıştığında. Metin2'nin syserr.txt dosyasına bunu yazar; "AnaPencere acmadan AltPencereyi acamazsiniz!"
Evet arkadaşlar bu konumuz bu şekilde bitmiştir. Buna dair sorularınız olursa belirtebilirsiniz.
Eğer bilmeyenler varsa Metin2 üzerine çook geniş çaplı eğitim seti hazırlıyorum. 5. Ünite'de ki videolara bakarak bu konuda anlatılanları anlayabilir ve kendi sistemlerinizi yazmayı öğrenebilirsiniz.
Eğitim serisine bakmak için: Metin2 Geliştirici Eğitimi Video Serisi
Bugün anlatacağım konu ileri düzey arkadaşlar içindir. Kendi sistemlerini kodlayabilen, python kodlarını anlayabilenlere yöneliktir.
Bu konumuzda bir pencereye başka bir pencereyi nasıl bağlayabileceğimizi anlatacağım.
Bunun artıları şu şekilde;
- Ana pencere açılmadan alt pencere açılmasını engelleyebilirsiniz.
- Alt pencereden ana pencerenin modüllerine ulaşabilirsiniz.
- Ana pencere üzerinden alt pencerenin verilerini hafızada tutabilirsiniz. (Örn: Envanterde belt (kuşak) kısmı açıkken envanteri açıp kapattığınızda eğer açıksa belt kısmı açık olarak gözükür.)
- Ve daha fazlası size kalmış.
Mesela OrnekWindow.py adında bir dosyamız olsun. Bunun uiscript ile gerekli boyutunu filan ayarladık. Bunu anlatmıyorum tabiki.
Daha sonra 2 tane class olduğunu varsayalım. Bunların birisi AnaPencere diğeri AltPencere. Örnek kodlar;
Python:
class AnaPencere(ui.ScriptWindow):
wndAltPencereWindow = None
def __init__(self):
ui.ScriptWindow.__init__(self)
self.isLoaded = 0
self.LoadWindow()
Gördüğünüz gibi basit bir pencere başlatacısı kullandık. Sizlere bu konuda python ile pencere oluşturmayı anlatmıyorum. Pencereleri birbirine bağlama yöntemini anlatıyorum.
Daha sonra LoadWindow fonksiyonuna scriptten gelen verileri değişkenlere filan atıyorsunuz. Bunu geçiyoruz.
Bizim ilgileneceğimiz kısım şu;
C++:
def LoadWindow(self):
if(self.isLoaded == 1):
return
self.isLoaded = 1
self.wndAltPencereWindow = AltPencereWindow(self)
Burada fark ettiyseniz. AltPencereWindow'u bir değişkene atadım. Fakat bunu atarken ana penceremizin verileri bulunduğu bir self gönderdik. Eğer bağlamak istemeseydik. Şöyle yapardık.
C++:
def LoadWindow(self):
if(self.isLoaded == 1):
return
self.isLoaded = 1
self.wndAltPencereWindow = AltPencereWindow()
Daha sonra basit bir AltPencereWindow sınıfını oluşturalım.
Python:
class AltPencereWindow(ui.ScriptWindow):
def __init__(self, wndAnaPencere):
import exception
if not wndAnaPencere:
exception.Abort("AnaPencere acmadan AltPencereyi acamazsiniz!")
return
ui.ScriptWindow.__init__(self)
self.wndAnaPencere = wndAnaPencere
Gördüğünüz gibi. AltPencereWindow sınıfını otomatik çalıştıran __init__ fonksiyonuna wndAnaPencere diye bir şey ekledim. Bunun sebebi biz AnaPencere'de AltPencereWindow sınıfını çağırırken AnaPencere'nin verilerini gönderiyoruz. AltPencerede o verileri alıyor.
Python:
AltPencereWindow(self)
Python:
if not wndAnaPencere:
exception.Abort("AnaPencere acmadan AltPencereyi acamazsiniz!")
return
Bu eğer ki kullanıcı bir şekilde AnaPencere'yi açmadan AltPencereyi açmaya çalıştığında. Metin2'nin syserr.txt dosyasına bunu yazar; "AnaPencere acmadan AltPencereyi acamazsiniz!"
Evet arkadaşlar bu konumuz bu şekilde bitmiştir. Buna dair sorularınız olursa belirtebilirsiniz.
Eğer bilmeyenler varsa Metin2 üzerine çook geniş çaplı eğitim seti hazırlıyorum. 5. Ünite'de ki videolara bakarak bu konuda anlatılanları anlayabilir ve kendi sistemlerinizi yazmayı öğrenebilirsiniz.
Eğitim serisine bakmak için: Metin2 Geliştirici Eğitimi Video Serisi
Son düzenleme: