我想使用python在自定义Maya UI中添加gif元素。由于Maya不接受动画图像作为输入,因此我创建了一个while循环并编辑输入图像。为此,我使用了Timer,一切正常,直到我重新运行脚本。旧线程仍旧处于活动状态(尽管我每次运行脚本时都会杀死它)
这是我的代码。我有一个“开始”和“停止”按钮,它们按预期的方式工作,但是如果重新运行该脚本,旧线程仍处于活动状态。
-as
答案 0 :(得分:1)
实际上,您正在尝试使gif用于线程和计时器,这只是在要求Maya崩溃,或者至少降低了场景的性能。
我强烈建议您仅使用Maya内置的PySide,而不要承担所有开销。这是一个简单的示例,无需处理线程的噩梦:
from PySide2 import QtCore
from PySide2 import QtGui
from PySide2 import QtWidgets
class Win(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Win, self).__init__(parent)
self.setWindowTitle("Gif Example")
self.resize(500, 500)
self.movie = QtGui.QMovie("/PATH/TO/YOUR/GIF.gif") # Set your gif path here.
self.movie.setScaledSize(QtCore.QSize(150, 150)) # You can resize it too.
self.movie.start()
self.gif = QtWidgets.QLabel(parent=self) # Use QLabel to display the gif.
self.gif.setMovie(self.movie)
self.main_layout = QtWidgets.QVBoxLayout()
self.main_layout.addWidget(self.gif)
self.setLayout(self.main_layout)
win = Win()
win.show()