基于Python3.10和PyQt6,视频播放采用ffmpeg。QSlider正常显示是白底窗口里面有滑块和轨道,但实际是窗口可见,看不见里面的
滑块和轨道,视频结束后QSlider一直如此,窗口标题后面显示“(未响应)”。播放总时长几秒的视频也如此。
电脑配置还可以,可以排除硬件问题,不知哪里不对,请高手指点
class Example(QWidget):
def init(self):
super().init()
self.initUI(cur_sec_f)
def initUI(self,cur_sec_f):
self.setGeometry(120, 750, 1280, 5)
self.setWindowTitle('Signal and slot')
self.setWindowFlags(Qt.WindowType.FramelessWindowHint)
lcd = QLCDNumber(self)
sld = QSlider(Qt.Orientation.Horizontal, self)
sld.setRange(0, int(time_f))
vbox = QHBoxLayout()
vbox.addWidget(lcd)
vbox.addWidget(sld)
self.setLayout(vbox)
sld.valueChanged.connect(lcd.display)
while cur_sec_f < time_f:
# cur_sec_f和time_f是全局变量,是ffmpeg播放视频获取的的视频当前秒数和总秒数,cur_sec_f会随视频播放实时变化
sld.setValue(int(cur_sec_f))
self.show()
time.sleep(1)
def jdt():
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec())
如果把while那一部分改成下面这样,则QSlider在前9秒只显示窗口(无滑块和轨道),延迟10秒后显示滑块和轨道,且滑块已经在“10”位置
i=0
while i<10:
i+=1
sld.setValue(i)
self.show()
time.sleep(1)