Python(tkinter) - 单击文本可在外部应用程序中打开文件

时间:2016-06-30 23:13:20

标签: python-3.x text tkinter widget tagging

附件显示了我想要实现的目标。

a)程序读入包含歌曲名称的csv文件(song1 - song5等)。

b)csv文件中的确切名称显示在文本小部件中,即小部件显示song1,song2,song 3等

c)用户点击其中一个名称,程序会查看包含那些确切名称但带有mp3后缀的目录,即song1.mp3,song2.mp3等,并加载vlc媒体播放器。

d)歌曲名称在现实生活中明显不同,但我想表明CSV,文本小部件和Windows资源管理器名称都很常见。

我需要了解如何实现这一目标。

1)我理解加载csv并标记文本,因此用户知道在哪里点击

2)我不理解用户点击文本时的过程,即如何计算用户点击的文本小部件中的区域,以及如何创建某种绑定来加载文件,mp3后缀会需要自动附加。

Program Overview

编辑添加了工作代码

def viewFile(event):
        path = "c:\\pdf"
        suffix= ".pdf"
        self.outputbox.tag_remove("dwg", "1.0", "end")
        self.outputbox.tag_configure("dwg", background="red")
        self.outputbox.tag_add("dwg", "insert linestart", "insert lineend")
        getdwg=self.outputbox.get("insert linestart", "insert linestart+10c")
        getdwg=getdwg.strip()
        linkname = (getdwg + suffix)
        self.outputbox.tag_bind("dwg", "<ButtonRelease-1>", lambda event, filename=path + '/' + linkname: subprocess.run(filename, shell=True))

有一些固定项目用于生成最终文件名和路径,这些文件和路径可能与其他文件无关,即“路径”,“后缀”,但它似乎按要求工作:)

1 个答案:

答案 0 :(得分:-1)

在Qt中,您可以使用Pyqt或Pyside,您将填充QListWidget,其中每个项目都有标签文本,并且可以与文件关联。然后,您可以连接选择列表中项目的事件,即Clicked或doubleClicked,其中包含确定列表中选择了哪个列表项的函数,检索关联文件名,然后执行要使用文件名调用外部程序的命令作为输入。