Если что-то должно произойти, как только [будет] показан виджет, вы можете сделать это методом showEvent()
:
class MainWindow(QtWidgets.QMainWindow):
firstShown = False
def showEvent(self, event):
super().showEvent(event)
if not self.firstShown:
self.firstShown = True
self.textEdit.setPlainText('hello')
Обратите внимание, что это точно не произойдет, как только как показано окно (для этого есть масса причин, в том числе тот факт, что системному «оконному менеджеру» может потребоваться некоторое время для фактического отображения виджета); В таких случаях достаточно достаточно безопасно, чтобы использовать одиночный QTimer, установленный в 0:
class MainWindow(QtWidgets.QMainWindow):
firstShown = False
def showEvent(self, event):
super().showEvent(event)
if not self.firstShown:
self.firstShown = True
QtCore.QTimer.singleShot(0, self.doStartupEvents)
def doStartupEvents(self):
self.textEdit.setPlainText('hello')
Другая теоретическая возможность состоит в том, чтобы делать эти события в paintEvent (гарантируя, что они происходят только в первый раз), но я бы не советовал.