Utilisation des objets du user interface dans la vue python Qt5 MVC
Bonjour a tous,
Je souhaite afficher les résultats générés par un solveur dans textBrowser Qt5 à l'aide de la méthode append. J'arrive déjà à récupérer la valeur dans une variable et l'afficher à partir d'un print(value) mais quand je fait textBrowser.append(value) je n'ai pas de résultat.
voici le code qui implémente ma vue.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtCore import pyqtSlot
from Views.mainwindow import Ui_MainWindow
class MainWiew(QMainWindow):
def __init__(self,model,controller):
super().__init__()
self._model = model
self._controller = controller
self._ui = Ui_MainWindow()
self._ui.setupUi(self)
#connection of widgets to controller
self._ui.pushButton_3.clicked.connect(self._controller.browserSlot)
self._ui.pushButton_5.clicked.connect(self._controller.runSlot)
self._ui.pushButton_4.clicked.connect(self._controller.exportSlot)
self._ui.pushButton_6.clicked.connect(self._controller.stopSlot)
self._ui.pushButton.clicked.connect(self._controller.modifySlot)
self._ui.pushButton_2.clicked.connect(self._controller.addSlot)
# connection of result to receive_signal method
self._model.mySignal.connect(self.receive_signal)
@pyqtSlot(str)
def receive_signal(self,value):
self._ui.textBrowser.append(value) #no display here
print(value) #able to dispay |
J'ai également essayé d'appeler la méthode receive_signal dans l'initialisation. elle ne m'affiche que le premier résultat et ensuite ... plus rien :(
En cas de besoin voici le code de mon model :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
from PyQt5.QtCore import QObject, pyqtSignal
class Model(QObject):
mySignal = pyqtSignal( str )
def __init__(self):
super().__init__()
self.prog_base = ''
self.data = ''
self.constraints = ''
self.newVal = ''
self._list_patterns = []
QObject.__init__(self)
#def refresh(self):
def mod(self ,m="none"):
if str(m) not in self._list_patterns:
self._list_patterns.append(m)
self.mySignal.emit(str(m)) |