Sto provando a dare una struttura sonora a un'applicazione PyQt che implementa un gioco di carte. Finora ho le seguenti classi:
-  
Ui_Game: questo descrive l'interfaccia utente ed è responsabile di reagendo agli eventi emessi dalle istanze di CardWidget
 -  
MainController: questo è responsabile della gestione del tutto applicazione: configurazione e tutti gli stati successivi dell'applicazione (come iniziare una nuova mano, visualizzare la notifica di stato cambia sull'interfaccia utente o termina il gioco)
 -  
GameEngine: questo è un insieme di classi che implementano l'intero gioco logica
 
Ora, il modo in cui l'ho codificato concretamente in Python è il seguente:
class CardWidget(QtGui.QLabel):
    def __init__(self, filename, *args, **kwargs):
        QtGui.QLabel.__init__(self, *args, **kwargs)
        self.setPixmap(QtGui.QPixmap(':/res/res/' + filename))
    def mouseReleaseEvent(self, ev):
        self.emit(QtCore.SIGNAL('card_clicked'), self)
class Ui_Game(QtGui.QWidget):
    def __init__(self, window, *args, **kwargs):
        QtGui.QWidget.__init__(self, *args, **kwargs)
        self.setupUi(window)
        self.controller = None
    def place_card(self, card):
        cards_on_table = self.played_cards.count() + 1
        print cards_on_table
        if cards_on_table <= 2:
            self.played_cards.addWidget(card)
            if cards_on_table == 2:
                self.controller.play_hand()
class MainController(object):
    def __init__(self):
        self.app = QtGui.QApplication(sys.argv)
        self.window = QtGui.QMainWindow()
        self.ui = Ui_Game(self.window)
        self.ui.controller = self
        self.game_setup()
C'è un modo migliore oltre a iniettare il controller nella classe Ui_Game in Ui_Game.controller? O sono totalmente fuori strada?