У меня проблема, что я не могу изменить gifs на QMainWindow
. Я читаю строку из json-файла, что json-файл меняется каждый раз. Например, если строка из json-файла равна aaa
, я хочу сыграть aaa.gif
на QMainWindow
, если строка bbb
Я хочу играть bbb.gif
. У меня уже есть 2 gif, но проблема в том, что при изменении строки в json-файле gif нет. Коды не долго, просто взгляните;PyQt5 не изменяет gifs
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_())
Я также попытался повторно определить весь QMovie
объект Aswell (от self.moviee до self.movie.start), но не работает. GIF не меняется и не играет, также я установил координаты после if self.mode == "bbb"
в другое место окна, чтобы увидеть, может быть, последний gif блокирует новый gif, но нет. На самом деле это не новый gif. Как я могу это решить?
Вы должны установить фильм на этикетку и перезапустить self.movie после каждого распределения, потому что вы положили другой объект в переменную self.movie и этот новый объект фильма ни в ярлыке, ни начала. – Enaid
Я пробовал это, я переопределил все объекты QMovie после того, как блок, как я сказал, не сработал. – GLHF
Тайм-аут для вашего QTimer равен 0, что означает, что timer_ будет вызываться только один раз, в то время как вы сказали, что ваш файл постоянно меняется. Попробуйте изменить таймаут? – Enaid