def setupUi(self): centralWidget = QtWidgets.QWidget(self) self.setCentralWidget(centralWidget) flags = QtCore.Qt.WindowFlags( QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint if self.on_top else QtCore.Qt. FramelessWindowHint) self.setWindowFlags(flags) self.setAttribute(QtCore.Qt.WA_NoSystemBackground, True) self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) label = QtWidgets.QLabel(centralWidget) movie = QMovie(self.img_path) label.setMovie(movie) movie.start() movie.stop() w = int(movie.frameRect().size().width() * self.size) h = int(movie.frameRect().size().height() * self.size) movie.setScaledSize(QtCore.QSize(w, h)) movie.start() self.setGeometry(self.xy[0], self.xy[1], w, h) self.del_label = QtWidgets.QLabel(centralWidget) self.del_movie = QMovie('gif/Boom3.gif') self.del_label.setMovie(self.del_movie) self.del_movie.setScaledSize(QtCore.QSize(w, h)) self.del_movie.start() self.del_label.hide() self.setGeometry(self.xy[0], self.xy[1], w, h)
def setupUi(self): """ 위젯을 화면 위에 올리기 :return: """ # contralWidget 정의 :: 정의 안하면 안보임 centralWidget = QtWidgets.QWidget(self) self.setCentralWidget(centralWidget) # FramelessWindowHint :: 창의 윗부분이 사라짐(닫기, 최소화 등등 있는 것) # WindowStaysOnTopHint :: 화면 항상 위에 있어라. 아래 if문을 만족하면 flags = QtCore.Qt.WindowFlags( QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint if self.on_top else QtCore.Qt. FramelessWindowHint) # Wa_ :: 창 배경을 깨끗하고 맑고 투명하게 self.setWindowFlags(flags) self.setAttribute(QtCore.Qt.WA_NoSystemBackground, True) self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) label = QtWidgets.QLabel(centralWidget) # 만든 contralWidget을 label에 올리기 movie = QMovie(self.img_path) # 위치확인 label.setMovie(movie) # 라벨셋팅 movie.start() movie.stop() # 크기를 구하기위해 한번 켰다끄기 #사이즈 정의 w = int(movie.frameRect().size().width() * self.size) h = int(movie.frameRect().size().height() * self.size) movie.setScaledSize(QtCore.QSize(w, h)) movie.start() # 크기 위치 정의 self.setGeometry(self.xy[0], self.xy[1], w, h)
def setupUi(self): centralWidget = QtWidgets.QWidget(self) self.setCentralWidget(centralWidget) flags = QtCore.Qt.WindowFlags(QtCore.Qt.FramelessWindowHint) self.setWindowFlags(flags) self.setAttribute(QtCore.Qt.WA_NoSystemBackground, True) self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) # 창 배경 투명화 label = QtWidgets.QLabel(centralWidget) movie = QMovie(self.img_path) label.setMovie(movie) movie.start() movie.stop() w = int(movie.frameRect().size().width() * self.size) # 50%... 30% 등의 추가 사이즈 조정을 위해 곱함 h = int(movie.frameRect().size().height() * self.size) movie.setScaledSize(QtCore.QSize(w, h)) # 맞춘 w, h 사이즈에 따라 애니메이션 설정 movie.start() # 재생 self.setGeometry(self.xy[0], self.xy[1], w, h)
def setupUi(self): centralWidget = QtWidgets.QWidget(self) self.setCentralWidget(centralWidget) flags = QtCore.Qt.WindowFlags( QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint if self.on_top else QtCore.Qt. FramelessWindowHint) self.setWindowFlags(flags) self.setAttribute(QtCore.Qt.WA_NoSystemBackground, True) #### self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True) #### ############## label = QtWidgets.QLabel(centralWidget) movie = QMovie(self.img_path) label.setMovie(movie) label2 = QtWidgets.QLabel(centralWidget) label2.move(0, 540) label2.setMovie(movie) label3 = QtWidgets.QLabel(centralWidget) label3.move(960, 0) label3.setMovie(movie) label4 = QtWidgets.QLabel(centralWidget) label4.move(960, 540) label4.setMovie(movie) movie.start() movie.stop() w = int(movie.frameRect().size().width() * self.size) h = int(movie.frameRect().size().height() * self.size) movie.setScaledSize(QtCore.QSize(w, h)) movie.start()
class Demo3(QDialog): def __init__(self, parent=None): QDialog.__init__(self, parent) self.setWindowTitle('show_gif') self.setWindowIcon(QIcon('image/Capture_64px.png')) self.setWindowFlags(self.windowFlags() | Qt.WindowMinMaxButtonsHint) # self.resize(400,400) self.setFixedSize(800, 600) mainl = QVBoxLayout(self) self.labelShow = QLabel() self.labelShow.setContentsMargins(0, 0, 0, 0) pat = self.labelShow.palette() pat.setBrush(QPalette.Background, Qt.darkGray) self.labelShow.setAutoFillBackground(True) self.labelShow.setPalette(pat) self.labelShow.setAlignment(Qt.AlignCenter) # self.labelShow.setScaledContents(True) mainl.addWidget(self.labelShow, 1) line = QFrame() line.setFrameShape(QFrame.HLine) line.setFrameShadow(QFrame.Sunken) mainl.addWidget(line) btnLay = QHBoxLayout() frmLay = QFormLayout() self._spinBox = QSpinBox() frmLay.addRow('跳转:', self._spinBox) btnGo = QPushButton('Go', self) btnPrev = QPushButton('上一张', self) self.btnNext = QPushButton('下一张', self) btnPrev.clicked.connect(self.on_prev) self.btnNext.clicked.connect(self.on_next) btnGo.clicked.connect(lambda: self.flashMovie(self._spinBox.value())) self._spinBox.valueChanged.connect(lambda n: self.flashMovie(n)) btnLay.addStretch() btnLay.addLayout(frmLay) btnLay.addWidget(btnGo) btnLay.addWidget(btnPrev) btnLay.addWidget(self.btnNext) btnLay.addStretch() mainl.addLayout(btnLay) labLay = QHBoxLayout() labLay.setSpacing(10) self._label = QLabel() frm1 = QFormLayout() frm1.addRow('共:', self._label) frm1.setRowWrapPolicy(QFormLayout.WrapLongRows) labLay.addStretch() labLay.addLayout(frm1) frm1 = QFormLayout() self._labInfo = QLabel() # self._labInfo.setWordWrap(True) frm1.addRow('当前:', self._labInfo) # frm1.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow) frm1.setRowWrapPolicy(QFormLayout.WrapLongRows) labLay.addLayout(frm1) frm1 = QFormLayout() self._labPlay = QLabel() frm1.addRow('播放帧号:', self._labPlay) labLay.addLayout(frm1) frm1.setRowWrapPolicy(QFormLayout.WrapLongRows) labLay.addStretch() labLay.setSpacing(10) line = QFrame() line.setFrameShape(QFrame.HLine) line.setFrameShadow(QFrame.Sunken) mainl.addWidget(line) mainl.addLayout(labLay) self._gifs = [] self._movie = QMovie() self.labelShow.setMovie(self._movie) QTimer.singleShot(0, self.on_firstShow) self._picIndex = 0 self._movie.frameChanged.connect(self.on_frameChange) # self._movie.finished.connect(lambda:self.btnNext.clicked.emit()) def on_frameChange(self, n): self._labPlay.setText(' {} 帧'.format(n)) if n + 1 == self._movie.frameCount(): self.btnNext.clicked.emit() def on_firstShow(self): dir = r'E:\jiandanspider\pic' for i in os.listdir(dir): # print(os.path.isfile(i),i.lower(),i.lower().endswith('gif')) fullPath = os.path.join(dir, i) if os.path.isfile(fullPath) and i.lower().endswith('gif'): self._gifs.append(fullPath) self._spinBox.setMaximum(len(self._gifs)) self._label.setText('%03d条记录' % len(self._gifs)) if len(self._gifs) > 0: self._movie.setFileName(self._gifs[0]) self._movie.start() self._labInfo.setText('{},{}帧\n{}'.format( os.path.split(self._movie.fileName())[1], self._movie.frameCount(), self._movie.frameRect())) def flashMovie(self, index): if index >= len(self._gifs): return self._movie.stop() self._movie.setFileName(self._gifs[index]) self._movie.start() self._spinBox.valueChanged.disconnect() self._spinBox.setValue(index) self._labInfo.setText('{},{}帧\n{}'.format( os.path.split(self._movie.fileName())[1], self._movie.frameCount(), self._movie.frameRect())) self._spinBox.valueChanged.connect(lambda n: self.flashMovie(n)) self._picIndex = index def on_next(self): self._picIndex += 1 if self._picIndex >= len(self._gifs): self._picIndex = len(self._gifs) - 1 self.flashMovie(self._picIndex) def on_prev(self): self._picIndex -= 1 if self._picIndex < 0: self._picIndex = 0 self.flashMovie(self._picIndex)