QMainWindow
에서 gif를 변경할 수 없다는 문제가 있습니다. json 파일에서 문자열을 읽고 있는데, json 파일이 매번 바뀌고 있습니다. 예를 들어 json 파일의 문자열이 aaa
인 경우 bbb
을 bbb.gif
으로 재생하려면 QMainWindow
에 aaa.gif
을 재생하고 싶습니다. 이미 2 개의 gif가 있지만 문제는 json 파일의 문자열이 변경되면 gif가 변경되지 않는다는 것입니다. 코드는 길지 않습니다. 한번보세요. PyQt5가 gif를 변경하지 않습니다
from PyQt5.QtWidgets import (QMessageBox,QApplication, QWidget, QToolTip, QPushButton,
QDesktopWidget, QMainWindow, QAction, qApp, QToolBar, QVBoxLayout,
QComboBox,QLabel,QLineEdit,QGridLayout,QMenuBar,QMenu,QStatusBar,
QTextEdit,QDialog,QFrame,QProgressBar
)
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtGui import QIcon,QFont,QPixmap,QPalette
from PyQt5.QtCore import QCoreApplication, Qt,QBasicTimer, QTimer,QPoint
import PyQt5.QtWidgets,PyQt5.QtCore
import time,random,subprocess,sys,json
class cssden(QMainWindow):
def __init__(self):
super().__init__()
self.mwidget = QMainWindow(self)
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.setFixedSize(1400,923)
self.center
#timer
self.timer = QTimer(self)
self.timer.timeout.connect(self.timer_)
self.timer.start(0)
#gif
self.moviee = QLabel(self)
self.movie = QtGui.QMovie("aaa.gif")
self.moviee.setMovie(self.movie)
self.moviee.setGeometry(5,-80,380,250)
self.movie.start()
self.show()
def timer_(self):
with open ("mode.json") as tt:
self.mode = json.load(tt)
print (self.mode)
if self.mode == "bbb":
self.movie = QtGui.QMovie("bbb.gif")
#self.moviee.setGeometry(400,200,380,250) #
else: #----] I tried this but not working
self.movie = QtGui.QMovie("aaa.gif") #
#center of the screen
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
app = QApplication(sys.argv)
app.setStyleSheet("QMainWindow{background-color: rgb(30,30,30);border: 1px solid black}")
ex = cssden()
sys.exit(app.exec_())
는 또한 (self.movie.start하는 self.moviee에서) 전체
QMovie
객체 aswell를 다시 정의하는 시도했지만 작동하지 않았다. GIF가 변경되거나 재생되지 않습니다. 또한 좌표를
if self.mode == "bbb"
다음에 설정하면 마지막 GIF가 새로운 GIF를 차단하고있는 것을 볼 수 있습니다. 실제로 새로운 gif를 재생하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?
당신은 당신이 변수 self.movie에 다른 개체를 넣어 때문에, 라벨에 영화를 설정하고 각 할당 후 self.movie를 다시 시작해야이 새 영화 객체는 라벨도 시작도 아니다. – Enaid
내가 말했던 것처럼, QMovie 객체 전체를 다시 정의했다. 작동하지 않았다. – GLHF
QTimer의 시간 초과는 0입니다. 즉, 파일이 항상 변경되는 동안 timer_는 한 번만 호출됩니다. 타임 아웃을 변경해보십시오. – Enaid