首页 > 解决方案 > 如何使用 GUI 的 Tkinter 框架浏览和导入视频?

问题描述

我在尝试在我的 GUI 中实现“浏览视频”功能时遇到了问题。本质上,我希望能够浏览并选择一个 .mp4 文件,该文件在选择时也会在屏幕上播放。这就是我目前所拥有的[open() 方法应该打开文件]:

from tkinter import *
from tkinter import ttk, messagebox, font
from tkinter.ttk import *
from tkinter import filedialog
# from PIL import ImageTk, Image

class MainScreen:

    def __init__(self, master_window):
        """
        Constructor initializes app.
        """
        self.master = master_window
        self.master.title("Markerless Demo")
        self.master.geometry("1000x500")
        self.master.columnconfigure(0,weight=1)
        self.master.rowconfigure(0,weight=1)

        #Creates notebook
        n = ttk.Notebook(self.master)
        n.grid(sticky="nsew")

        #Logo Creation 
        welcome_sign = ttk.Label()
        welcome_sign['image'] = image
        welcome_sign.grid(column=0,row=2)

        # Welcome_Page Frame ----------------------------------
        welcome_page = ttk.Frame(self.master)   # first page, which would get widgets gridded into it        
        n.add(welcome_page, text='Welcome')

        welcomeText = ttk.Label(welcome_page, text="Welcome to the Markerless Mice Tracking Project Manager GUI!" + 
            "\nBegin by clicking 'Project Management' " +
            "\ntab to create a new project or load an existing one.",
            font = ("Tw Cen MT", 14))

        # welcomeText.grid(column=0,row=1, columnspan=2,rowspan=3)
        welcomeText.place(x=500, y=100, anchor="center")

        # Video_Input Frame -------------------------------------
        video_input_page = ttk.Frame(self.master) 
        n.add(video_input_page, text='Project Management')
    
        option_frame = ttk.Labelframe(video_input_page, text='Please choose an option', width=200, height=200)
        option_frame.grid(column=0, row=0)

        videoInputBar = ttk.Label(video_input_page, text = "Select Video",
            font = ("Tw Cen MT", 12))
        videoInputBar.grid(column=0,row=1)

        loadVideoBtn = ttk.Button(video_input_page, text = "Load Video", command=open)
        loadVideoBtn.grid(column=0, row=2, pady=20)

        fileEntryBar = ttk.Entry(video_input_page)
        fileEntryBar.grid(column=2,row=2, pady=5, ipadx=100, padx=10)

        # Allows user to select to create new project or load old one
        project_flag = StringVar()
        create_new_bttn = ttk.Radiobutton(option_frame, text="Create new project", variable = project_flag, value="create")
        create_new_bttn.grid(column=0,row=0)
        load_proj_bttn = ttk.Radiobutton(option_frame, text="Load existing project", variable = project_flag, value="load")
        load_proj_bttn.grid(column=1,row=0)

    def open():
        master_window.filename = filedialog.askopenfilename(initialdir ="/gui/images",title="Select A File", filetypes=(("mp4 files", "*.mp4")))
        file_path = ttk.Label(master_window.filename)

    master_window = Tk()
    master_window.style = Style()
    master_window.style.theme_use("clam")
    image = PhotoImage(file="200w.gif")
    print(font.families())

    MainScreen(master_window)
    master_window.mainloop()

标签: pythontkinter

解决方案


推荐阅读