Python 调整窗口大小时,调整视频帧大小以适应tkinter窗口大小

Python 调整窗口大小时,调整视频帧大小以适应tkinter窗口大小,python,python-3.x,opencv,tkinter,Python,Python 3.x,Opencv,Tkinter,我已经编写了一段代码,在tkinter上使用OpenCV播放视频。这是我制作并编译成应用程序的游戏的一部分。但我注意到,当我在不同的电脑上玩游戏时,由于屏幕大小不同,视频不能完全符合我想要的屏幕大小。我在不同页面中使用的背景图像也是如此,但我编写了一段代码,将背景图像调整为屏幕大小。这是: def resizeimage(自身,事件): 宽度,高度=self.winfo_宽度(),self.winfo_高度() image=self.bg_image.resize((宽度、高度)) self.i

我已经编写了一段代码,在tkinter上使用OpenCV播放视频。这是我制作并编译成应用程序的游戏的一部分。但我注意到,当我在不同的电脑上玩游戏时,由于屏幕大小不同,视频不能完全符合我想要的屏幕大小。我在不同页面中使用的背景图像也是如此,但我编写了一段代码,将背景图像调整为屏幕大小。这是:

def resizeimage(自身,事件):
宽度,高度=self.winfo_宽度(),self.winfo_高度()
image=self.bg_image.resize((宽度、高度))
self.image1=ImageTk.PhotoImage(图像)
self.bg_label.config(image=self.image1)
我已将此函数绑定到显示背景图像的标签,如下所示:

self.bg\u image=image.open(“project\u pics\\start\u pg.png”)
bg_image=ImageTk.PhotoImage(self.bg_image)
self.bg\u label=标签(self,image=bg\u image)
self.bg\u label.image=bg\u image
self.bg_label.bind(“”,self.resizeimage)
self.bg_label.grid(sticky=“nwse”)
这里,
self.bg_image
是要显示为背景的图像,
self.bg_label
是显示图像的标签。 我知道我可以通过调整帧大小来实现类似的功能,在我的代码中播放视频,但我似乎无法找到一种快速有效的方法来实现。以下是视频播放器的代码:

从tkinter导入*
从tkinter.ttk导入按钮
从PIL导入图像,ImageTk
导入时间
将cv2作为cv2导入
从线程导入线程
从Scripts.music\u player导入m\u player
从Scripts.styles导入样式
#视频播放器
类视频播放器:
定义初始化(自身,父级):
self.parent=parent
self.play=False
def播放器(自身、视频文件、m文件、nxt函数):
def get_frame():
ret,frame=vid.read()
如果ret和self.play:
返回(ret,cv2.cvt颜色(边框,cv2.COLOR_BGR2RGB))
其他:
返回(返回,无)
def update():
ret,frame=get_frame()
如果ret和self.play:
img=Image.fromarray(帧)
photo=ImageTk.PhotoImage(image=img)
photo.image=img
self.canvas.itemconfig(self.vid_frame,image=photo)
self.canvas.image=photo
self.parent.after(延迟,lambda:update())
其他:
睡眠时间(0.01)
#停止视频音乐并启动游戏音乐
m_播放器。音乐控制(m_文件,真,-1,0)
m_player.music_control(“project_media\\signal.ogg”,False,-1,0)
nxt_func()
def skip():
self.play=False
self.parent.clear()
self.play=True
#起始音乐
m_player.music_control(“project_media\\signal.ogg”,True,-1,0)
m_player.music_控件(m_文件,False,-1,0)
vid=cv2.VideoCapture(vid_文件)
宽度=vid.get(cv2.CAP\u PROP\u FRAME\u width)
高度=视频获取(cv2.CAP\U PROP\U FRAME\U height)
self.canvas=canvas(self.parent,width=width,height=height)
self.canvas.place(relx=0.5,rely=0.5,anchor=CENTER)
self.vid_frame=self.canvas.create_image(0,0,anchor=NW)
#跳过按钮
如果视频文件!=“项目\媒体\\glitch.mp4”:
跳过线程=线程(目标=跳过)
skip=按钮(self.parent,text=“skip”,command=skip\u thread.start,style=“skip.TButton”)
跳过。放置(relx=0.88,rely=0.04)
延迟=5
更新()
我的问题是如何在不降低执行速度的情况下有效调整帧大小以适应屏幕大小?。此外,我现在使用的调整背景图像大小的功能似乎也在降低执行速度。所以我每次换页面时都能在屏幕上看到类似小故障的东西。那么有没有其他方法可以调整背景图像的大小呢。对不起,如果代码有点乱。我是初学者,这是我做的第一个游戏