QLabel'e Extension Method nasıl yazılır?

python

#1

C#'dan örnek vereyim.

  public static class Extensions
  {
     public static void italicYap(this Textbox textbox)
     {
          textbox.Font = new Font(textBox.Font, FontStyle.Italic);
     }
  }

Yukarıdaki kodda “textbox” (Qt’de Text Edit) içerisindeki yazının fontu italik yapılıyor.
Bu methodu herhangi bir yerde ve “textbox” sınıfından olan herhangi bir kontrolde direk olarak kullanılabiliniyor.
örneğin : ‘isim’ textbox sınıfından kontrol nesnesi.
isim.italicYap();
PyQt’de widgetler için (QLabel veya QTextEdit vs) nasıl kullanılabiliniyor?


#2

C#'da this, python’da self ifadesi benzeri işlev görüyor. Burada static bir sınıfdan static method ile this ifadesindeki sadece belirtilen sınıf için geçerli olan bir method tanımlanıyor.Python da bu işlevi nasıl yapabiliriz? QLabel’e eklenti method tanımlama yapılabilir mi?


#3

PyQt bilmiyorum ama Python’da bu tarz eklemeler yapabilmek için sınıfı önce miras alırız,

class NewTextEdit(QTextEdit):
    def __init__(self, *args, **kwargs):
        super(NewTextEdit, self).__init__(*args, **kwargs)

    def new_method(self):
        [...] # your stuff
        pass

#4

Teşekkürler. Miras almak dışında başka seçenek yok gibi.araştırıyorum.sağol…


#5

Python da C# gibi genel amaçlı bir programlama dilidir; C#'taki bir kullanımı o veya bu şekilde Python’da da bulabilirsiniz. Verdiğiniz örnekteki gibi Extensions isimli bir sınıf tanımlayıp bunun metodları ile pencere araçlarını değiştirebileceğiniz gibi @r0ark’ın da belirttiği gibi ilgili sınıftan miras alarak da genişletme yapabilirsiniz. Aslında bu son söylediğim yol en iyi yoldur ve hem C# hem de Python’da yapılabilir.