J'espère que vous pourrez rédiger un mémorandum et le corriger.
Je pense qu'il est facile de vouloir faire du traitement uniquement lorsque l'application est affichée pour la première fois, mais il semble que vous ne puissiez pas écrire MainWindow.show.connect (quel gâchis).
J'ai cherché comment écrire un traitement de type onLoad effectué par VBA, etc., en laissant autant que possible la description de setupUI générée par Designer, et je l'ai résolu avec eventfilter, veuillez donc noter et corriger.
self.startUpFilter = StartUpFilter()
self.centralwidget.installEventFilter(self.startUpFilter)
self.startUpFilter.installWidget(self.hoge,self.fuga)
J'ai trouvé que les événements show sont passés à centralwidget, donc j'ai pensé qu'il serait préférable de définir eventfilter sur centralwidget et d'écrire ceci et cela uniquement au premier événement show, mais il est passé par eventfilter. Est la source de l'événement et de l'événement lui-même, et je ne sais pas comment faire fonctionner le hoge et le fuga créés par Designer à partir de cet événement, et je ne le trouve pas. Donc, comme eventfilter est une classe, j'ai pensé qu'il serait préférable d'enregistrer le widget lui-même qui sera utilisé plus tard, séparément de installEventFilter, j'ai donc ajouté une méthode appelée installWidget. Le StartUpFilter terminé est
class StartUpFilter(QtCore.QObject):
startupState = False
def installWidget(self,hoge,fuga):
self.hoge = hoge
self.fuga = fuga
def eventFilter(self, widget, event):
if event.type() == QtCore.QEvent.Type.Show:
if not self.startupState:
self.hoge.hogeMethod(self.fuga)
self.startupState = True
return False
La sous-classification de hoge et fuga peut être la norme. Je voudrais publier un rapport indiquant que cela fonctionne même si je l’écris comme ça, et souligner que ce n’est pas bon.
Recommended Posts