我正在Ubuntu上用python编写程序,以从文件夹导入和打印视频文件的名称,但是它以简单文本的形式打印,而不是以可点击的形式打印。

我想让它们可点击并在视频播放器“ vlc”上一键打开。

你能指导我这样做吗?

import io,sys,os,subprocess 
from Tkinter import *

def viewFile():
    for f in os.listdir(path):
        if f.endswith(".h264"):
            tex.insert(END,f + "\n")

if __name__ == '__main__':
    root = Tk()

    mainframe= root.title("FILE MANAGER APPLICATION")                         # Program Objective
    mainframe= root.attributes('-fullscreen', True)

    step = LabelFrame(root,text="FILE MANAGER", font = "Arial 20 bold   italic")
    step.grid(row=0, columnspan=7, sticky='W',padx=100, pady=5, ipadx=130, ipady=25)

    Button(step,    text="File View",   font = "Arial 8 bold    italic",    activebackground="turquoise",   width=30, height=5, command=viewFile).grid      (row= 1, column =2)
    Button(step,    text="Exit",        font = "Arial 8 bold    italic",    activebackground="turquoise",   width=20, height=5, command=root.quit).grid     (row= 1, column =5)

    tex = Text(master=root)
    scr=Scrollbar(root,orient =VERTICAL,command=tex.yview)
    scr.grid(row=2, column=2, rowspan=15, columnspan=1, sticky=NS)
    tex.grid(row=2, column=1, sticky=W)
    tex.config(yscrollcommand=scr.set,font=('Arial', 8, 'bold', 'italic'))

    global process
    path = os.path.expanduser("~/python")                   # Define path To play, delete, or rename video
    root.mainloop()

#1楼 票数:2 已采纳

您可以将标签添加到文本小部件中的字符范围,并且可以在标签上设置绑定。 因此,一种简单的解决方案是为每个文件名创建一个唯一的标签,并为该标签创建一个唯一的绑定。

例如:

def viewFile():
    for f in os.listdir(path):
        if f.endswith(".h264"):
            linkname="link-" + f
            tex.insert(END,f + "\n", linkname)
            tex.tag_configure(linkname, foreground="blue", underline=True)
            tex.tag_bind(linkname, "<1>", lambda event, filename=f: openFile(filename))

这将导致使用一个参数(即文件名)调用名为openFile的函数。 然后,您可以在该函数中执行所需的任何操作。

#2楼 票数:2

最后尝试此行以在VLC上打开视频

tex.tag_bind(linkname, "<1>", lambda event, filename =path+'/'+f: subprocess.call(['vlc',filename]))

#3楼 票数:0

一种简单的方法是遍历所有文件,并为每个文件创建一个按钮,其文件名如下所示

 fram = Frame(root)
 files = os.listdir(path):
 for f in range(0, len(files), 1):
    if files[f].endswith(".h264"):
        name = files[f].split(".")
        b = Button(fram, text=name[0])
        b.bind('<Button>', openV)
        b.grid(row=f, column=1)

现在您的openV功能应该看起来像这样才能实际打开文件

def openV(event):
     b = event.widget()
     properties = b.config() #get all config for this widget, conveniently the only value right now is text
     n = properties[0]
     bashCommand = "vlc " + n + ".h264" # this is the command to actually be exectuted
     os.system(bashCommand)

确保您的系统上安装了python-swap, os.system()会出现错误,您不需要具有唯一的ID,因为在同一个文件夹中不存在两个具有相同名称和扩展名的文件!

  ask by Fahadkalis translate from so

未解决问题?本站智能推荐:

1回复

如何在Ubuntu上的python中关闭/退出/退出Vlc Player

我试图在Ubuntu上用Python编写一个简单的程序,在播放完视频后将关闭/退出/退出VLC Player。 您能否指导我,我应该在程序中添加些什么才能获得所需的结果。 谢谢
3回复

如何在 tkinter 框架中嵌入 vlc 实例

我想在 tkinter 框架中嵌入一个 vlc 实例。 这里已经有一个类似的代码在 tkinter 窗口中显示一个终端,但我想显示一个 vlc。 这是我的 vlc 代码: 这是简单的 tkinter 代码 我想在这个 tkinter 框架中显示那个 vlc 流
1回复

在Ubuntu上每次启动VLC媒体过程时,如何自动调用Python脚本?

我正在制作一个Python脚本,该脚本将在VLC媒体播放器在Ubuntu系统上运行时保存歌曲路径。 该脚本已经准备好,但是如果我在启动时运行此脚本,它将在循环中连续使用cpu share。 我想在用户启动vlc媒体播放器时自动调用脚本。 我该怎么做? 任何shell脚本都能实现吗?
1回复

在Tkinter的vlc屏幕上捕获点击事件

我正在Windows 7和Python 2.7上为tkinter运行python-vlc示例的精简版本。 我正在尝试在视频屏幕本身上注册点击,而没有任何按钮或其他UI。 但是,无论我在哪里尝试将.bind()用作侦听器,VLC似乎都会吞噬所有输入,并且永远不会调用我的回调函数。 这
1回复

如何使VLC单击

我一直在网上寻找解决此问题的方法! 我正在寻找一种使Linux上的VLC窗口“单击通过”的方法。 我在这里找到了一些python代码: https ://stackoverflow.com/a/11917174/3426514说它可以解决问题,但是我不知道如何将答案应用于我的VLC窗
2回复

无法将vlc导入python程序

我正在尝试通过 VLC 在 python Tkinter 中重现带有声音的视频,但无法运行该文件,因为在运行 import vlc 行时出现错误。 我有 32 位的 python 3,32 位的 VLC 播放器,并通过pip install python-VLC安装它,它成功了,然后尝试运行代码并
2回复

在Python中打开VLC浏览文件窗口

我试图在python中创建一个程序,在Ubuntu上打开一个VLC“浏览文件窗口” 但上面的代码只是打开'VLC播放器'而不是文件打开窗口你能指导我如何获得所需的结果我还添加了vlc文件打开图像 谢谢
1回复

使用VLC捕获视频并将帧另存为jpeg,怎么办?

我如何从视频流1帧中获取并保存为samp.jpeg(在同一文件1帧上覆盖),以便可以在该jpeg的python画布或gui渲染中以及在浏览器中使用它。 以下测试不起作用。 不起作用 作品: