微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使滚动条在LabelFrame内的Tkinter中工作,并使该LabelFrame固定大小?

如何解决如何使滚动条在LabelFrame内的Tkinter中工作,并使该LabelFrame固定大小?

我正在尝试制作youtube视频下载器应用,下载部分工作正常,但是我无法使滚动条正常工作,我想制作一个固定尺寸的框架并将所有可用的画质放到该固定框架中,但我不知道为什么边框的大小会增加而不是提供滚动条。

我还附上了该应用的屏幕截图以及我想要的编辑内容。请帮忙 预先感谢。

这是代码 Output Image

import tkinter as tk
from pytube import YouTube

def click_radioB_video():
    print(var.get())

def click_radioB_audio():
    print(var2.get())

def download():

    frame_video = tk.LabelFrame(root,text="Video",height=200,width=200)
    frame_video.grid(row=4,column=0)
    frame_video.grid_propagate(1)

    canvas_scroll = tk.Canvas(frame_video,width=190,height=200)
    canvas_scroll.grid(row=0,column=0,sticky="nsew")

    video_output = tk.Frame(canvas_scroll)
    video_output.grid(row=0,column=0)

    scrollbar = tk.Scrollbar(frame_video,command=canvas_scroll.yview)
    scrollbar.grid(row=0,column=1,sticky="nsew")

    canvas_scroll.configure(yscrollcommand=scrollbar.set)
    canvas_scroll.bind("<Configure>",lambda e: canvas_scroll.configure(scrollregion=canvas_scroll.bBox("all"))
)
    frame_audio = tk.LabelFrame(root,text="Audio",width=200)
    frame_audio.grid(row=4,column=1)

    yt = YouTube(str(link.get()))
    down_opt = yt.streams.all()
    video_opt = []
    audio_opt = []
    for _ in down_opt:
        if _.type == "video":
            video_opt.append(_)
        else:
            audio_opt.append(_)
    print(len(video_opt))
    print(len(audio_opt))
    # yt = YouTube(str(link.get())).streams.filter(progressive=True,file_extension="mp4").order_by(
    #             "resolution").desc().first()
    # yt.download("./random")

    vid_count=0
    aud_count=0

    for __ in video_opt:
        tk.Radiobutton(video_output,text=__.mime_type.split("/")[1] + str(" (") + __.resolution +
        str(")") + str("[") + str(__.fps) + str("FPS]"),variable=var,value=__.itag,command=click_radioB_video,width=25,justify="left",anchor="w").grid(row=vid_count,column=0)
        vid_count+=1
    for ___ in audio_opt:
        tk.Radiobutton(frame_audio,text=___.mime_type,variable=var2,value=___.itag,command=click_radioB_audio,anchor="w").grid(
        row=aud_count,sticky="N")
        aud_count+=1

def on_click(*args):
    link.configure(state="normal")
    link.delete(0,len("Enter Video Link"))
    link.unbind("<Button-1>")

root = tk.Tk()
var = tk.StringVar()
var2 = tk.StringVar()
root.title("YouTube Video Downloader ~ Suvit")
root.geometry("500x500")

main_label = tk.Label(root,text="YT Video Downloader ~ Suvit")
main_label.grid(row=0,padx=8,pady=8)

# link entry
link = tk.Entry()
link.grid(row=1,sticky="nsew",columnspan=2)
link.insert(0,"Enter Video Link")
link.configure(state="disabled")
link.bind("<Button-1>",on_click)

# Parse Button
parse_butt = tk.Button(text="Parse it",command=download)
parse_butt.grid(row=3,column=0)


root.mainloop()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。