2016-04-10 39 views
1
Kullanıcı verilerinin Geçme

Ben PyQT QbuttonGroup: buttonClicked

class TupleButtonGroup(QtGui.QButtonGroup): 
    def __init__(self,parent, tuple_pair): 
     super(TupleButtonGroup, self).__init__(parent) 
     self.tuple_pair = tuple_pair 

Ve kullanıcı veri tuple_pair erişmek istediğiniz ve ilgili düğme düğmesi grubunda tıklandığında buttonclicked üzerinde QbuttonGroup

devralır benim kendi sınıfı tanımladık

button_group.buttonClicked[QtGui.QAbstractButton].connect(self.labelchanged) 

def labelchanged(self, button): 
    print button.text() 

fonksiyon tıklanan düğmeye alır ama callback'inde

cevap

1

Tüm düğmeler onlar eklenmiş ne olursa olsun grubunda (varsa) bir başvuru almak için izin veren bir group() yöntemi var.

button_group.buttonClicked.connect(self.labelchanged) 

def labelchanged(self, button): 
    print button.text() 
    print button.group().tuple_pair 

Ve sinyali bağlanırken bu varsayılan aşırı yük olduğu için, QAbstractButton specifiy gerek yok bu unutmayınız: Yani kod basitçe olabilir.

+0

Teşekkürler :) çalışıyor –

0

kullanıcı verilerini bunu birkaç yolu yapabileceği erişmek bilmiyorum.

Alt sınıfınızda buttonClicked sinyalini yakalayabilir ve tuple_pair'u içeren kendi sinyalinizi yayabilirsiniz.

class TupleButtonGroup(QtGui.QButtonGroup): 
    buttonClickedWithData = QtCore.pyqtSignal(tuple, QtGui.QAbstractButton) 

    def __init__(self,parent, tuple_pair): 
     super(TupleButtonGroup, self).__init__(parent) 
     self.tuple_pair = tuple_pair 
     self.buttonClicked[QtGui.QAbstractButton].connect(self.on_buttonClicked) 

    @QtCore.pyqtSlot(QtGui.QAbstractButton) 
    def on_buttonClicked(self, button): 
     self.buttonClickedWithData.emit(self.tuple_pair, button) 

Ardından yalnızca bu yeni sinyal Diğer seçenek içinden düğme grubuna bir başvuru almak için mevcut sınıf, sinyalleri ve yuvalarını kullanın ve .sender() yöntemi kullanmaktır

button_group.buttonClickedWithData.connect(self.labelchanged) 

@QtCore.pyqtSlot(tuple, QtGui.QAbstractButton) 
def labelchanged(self, tuple_pair, button): 
    print tuple_pair 
    print button.text() 

bağlanmak yuva yöntemi.

@QtCore.pyqtSlot(QtGui.QAbstractButton) 
def labelchanged(self, button): 
    btngroup = self.sender() 
    print btngroup.tuple_pair 
    print button.text() 
+0

Teşekkürler. biraz daha karmaşık görünüyor. Button.group() çağırmak tuple_pair @ekhumoro tarafından önerildiği gibi çok daha kolay görünüyor –