PyQt5 QTimer выполняется только при нажатии кнопки, а не непрерывно - PullRequest
0 голосов
/ 17 июня 2020

Я написал следующий код, который импортирует и показывает модель vtk, и использовал QTimer (), чтобы попытаться обновить фон.

Я хочу постоянно менять цвет фона, независимо от того, есть ли окно взаимодействие. Однако в настоящее время окно обновляется один раз при открытии окна, а затем только после нажатия кнопки. Я основал свой код на этой ветке , с которой мне пришлось работать в классах.

Я был бы признателен за любые советы о том, как исправить это, чтобы постоянно обновлять фон.

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.vtkWidget = QVTKRenderWindowInteractor()

        self.ren = vtk.vtkRenderer()
        self.vtkWidget.GetRenderWindow().AddRenderer(self.ren)
        self.vtkWidget.GetRenderWindow().GetInteractor().Initialize()

        self.setCentralWidget(self.vtkWidget)

        self.model_file = 'newpivot.stl'

        # Create source
        self.source = vtk.vtkSTLReader()
        self.source.SetFileName(self.model_file)
        self.source.Update()

        actor, self.ren = self.updateBackground()

        self.ren.AddActor(actor)

        self.ren.ResetCamera()

        timer = QTimer(self)
        timer.timeout.connect(self.interpolationModel)
        timer.start(100)


    def updateBackground(self):
        self.ren.SetBackground(random.random(), random.random(), random.random())

        ## Some other code

        return actor, self.ren
...