【问题标题】:tagging text and looping to open file with external application标记文本并循环使用外部应用程序打开文件
【发布时间】:2016-06-21 21:45:57
【问题描述】:

我有一个文本小部件,它显示一列数据“dwg”,单击任何这些数据都应该打开一个外部 PDF 应用程序。我似乎遇到了循环问题,因为标签不起作用,随后打开了文件。我哪里出错了?

def displayFile():
    for f in os.listdir("c:\\pdf"):
        if f.endswith(".pdf"):
            pdflink="dwg" + f
            path="c:\\pdf"
            self.textbox.insert(END,f + "\n", "dwg")
            self.textbox.tag_configure(pdflink, foreground="#0078D7", underline=False)             
            self.textbox.tag_bind(pdflink, "<Double-Button-1>", lambda event, filename = path+'/'+ f: subprocess.run(['c:\program files\sumatraPDF\sumatraPDF',filename]) )

【问题讨论】:

    标签: loops python-3.x tkinter textbox tags


    【解决方案1】:

    您添加到文本的标签是"dwg",但您配置和绑定的标签是"dwg"+f

    self.textbox.insert(END, f+"\n", pdflink) # or "dwg" + f if you prefer
    

    【讨论】:

    • 我正在尝试(并且可能做错了)是在“dwg”数据的末尾添加一个 .pdf 后缀。原因是“dwg”数据匹配位于目录 c:\\pdf 中的 pdf 文件。例如,我的文本小部件显示 3 行数据,每行具有不同的“dwg”数据,例如 abcd 或 efgh 或 wxyz。我希望能够添加一个 .pdf 后缀,即 abcd.pdf,然后打开我的外部应用程序。
    • 是的,它应该正确地做到这一点——你只是没有标记你插入的文本。或者更确切地说,它上面的标签是“dwg”,但您没有将打开文件 lambda 绑定到“dwg”标签,而是将打开文件 lambda 绑定到“dwg”+f 标签(即“dwgmyfilename.pdf”),它不在文本中。让 clicky-tag 和插入的标签匹配,它应该有帮助
    • 感谢@delioth,我已经搞定了,不幸的是,它为我点击的任何内容打开了相同的 PDF,但这超出了我原来的问题的范围 :)
    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2018-07-27
    • 1970-01-01
    相关资源
    最近更新 更多