Python GTK + 'da yeni sinyaller oluşturmak mümkün mü?Python GTK +: özel sinyaller oluşturulsun mu?
Bir iskelet kodu örneği istiyorum, lütfen.
Python GTK + 'da yeni sinyaller oluşturmak mümkün mü?Python GTK +: özel sinyaller oluşturulsun mu?
Bir iskelet kodu örneği istiyorum, lütfen.
bir alıntı: Kendi sinyalleri
GObject özel sinyallerini tanımlamak olduğu sınıflara, muhtemelen kullanım istediğiniz başka bir şey oluşturma
. kendi sinyallerinizi oluşturabilir, böylece sınıfınızın kullanıcıları 'a bağlanabilir.
Bir sinyal verdiğinde, kapatma seti çalıştırılır. Bir kapanış , geri arama konseptinin bir özetidir. Bir kapanma, kendisinin (bir işlev işaretçisi), kullanıcı veri ( geri arama için son parametresi olacak) ve temizleme sorunları için başka bir işlevdir, bu belgede belirtilmez. Bu maddenin uğruna
değil gerçekten çok hem terimler kullanılacak bir geri arama ve bir kapatma arasındaki farkı bilmek gerekiyor. Ancak, numaralı telefonun tamamen numaralı telefonun doğru olmadığını bildirmesi gerekir.
Daha önce de söylediğimiz gibi, bir sinyal yayıldığında, bir dizi kapanma yürütülecektir. Bunlardan biri, bu sınıfın tüm örnekleri için ve aynı zamanda onun adı: ve diğerlerinin özel kullanıcı geri çağrıları için aynı bir 'dur. Opsiyonel olduğu için, sinyallerinin hiçbirinin sınıf kapanmasına sahip olmaması gerektiğini unutmayın.
http://www.pygtk.org/articles/subclassing-gobject/sub-classing-gobject-in-python.htm'dan, umarım yardımcı olur. Orada site ve here, bir pasajı örnek kod şudur:
import pygtk
pygtk.require('2.0')
import gobject
class Car(gobject.GObject):
__gproperties__ = {
'fuel' : (gobject.TYPE_FLOAT, 'fuel of the car',
'amount of fuel that remains in the tank',
0, 60, 50, gobject.PARAM_READWRITE)
}
__gsignals__ = {
'engine-started' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE,
(gobject.TYPE_FLOAT,))
}
def __init__(self):
gobject.GObject.__init__(self)
self.fuel = 50
def do_get_property(self, property):
if property.name == 'fuel':
return self.fuel
else:
raise AttributeError, 'unknown property %s' % property.name
def do_set_property(self, property, value):
if property.name == 'fuel':
self.fuel = value
else:
raise AttributeError, 'unknown property %s' % property.name
def do_engine_started(self, remaining_fuel):
print '***** Beginning of class closure *****'
print 'The engine is ready and we still have %f of fuel' % self.fuel
print '***** End of class closure *****'
def start(self):
self.emit('engine-started', self.get_property('fuel'))
gobject.type_register(Car)
cevaplar elbette doğru, ama libraries kullanarak ağrıları daha az eğilimli: kabul için
import gobject
from pygtkhelpers.utils import gsignal
class Car(gobject.GObject):
gsignal('engine-started', float) # yeah baby
teşekkür, o kırdı benim Bütün gece tuhaf bir sebepten dolayı 10 bin bariyer. –
@Aiden: Benim için zevk: Üzgünüm bugün kaldı (şimdi kota erken ulaştı) upvotes yok. – jldupont
Merak etme, beni 'k' bölgesine zorladığım için teşekkürler! –