【问题标题】:Python (tkinter) - clicking text opens file in external applicationPython(tkinter) - 单击文本在外部应用程序中打开文件
【发布时间】:2016-06-30 23:13:20
【问题描述】:

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

a) 程序读取包含歌曲名称的 csv 文件(歌曲 1 - 歌曲 5 等)。

b) csv 文件中的确切名称显示在文本小部件中,即小部件显示歌曲 1、歌曲 2、歌曲 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))

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 如果可能的话,我宁愿使用标准的python IDLE程序来保留东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 2015-07-04
    • 1970-01-01
    • 2018-11-19
    • 2016-07-18
    相关资源
    最近更新 更多