Python (tkinter) — щелчок по тексту открывает файл во внешнем приложении

В приложении показано, чего я пытаюсь достичь.

а) Программа считывает CSV-файл, содержащий названия песен (song1 - song5 и т.д.).

б) точные названия из CSV-файла отображаются в текстовом виджете, т. е. в виджете отображается песня1, песня2, песня 3 и т. д.

c) пользователь щелкает одно из этих имен, и программа ищет в каталоге, который содержит эти точные имена, но с суффиксом mp3, то есть song1.mp3, song2.mp3 и т. д., и загружает медиаплеер vlc.

d) Названия песен, очевидно, отличаются в реальной жизни, но я хотел показать, что имена CSV, текстового виджета и проводника Windows являются общими.

Мне нужно понять, как это сделать.

1) Я понимаю загрузку csv и пометку текста, чтобы пользователь знал, куда нажимать

2) Я не понимаю процедуру, когда пользователь щелкает текст, т.е. как определить область в текстовом виджете, которую щелкнул пользователь, и как создать какую-то привязку для загрузки файла, суффикс mp3 должен быть также автоматически прикрепляется.

Обзор программы

EDIT Добавлен рабочий код

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))

Есть несколько фиксированных элементов, которые используются для создания окончательного имени файла и пути, которые могут не иметь отношения к другим, а именно «путь», «суффикс», но, похоже, он работает по мере необходимости :)


person LMP2016    schedule 30.06.2016    source источник


Ответы (1)


В Qt, который вы могли бы использовать с Pyqt или Pyside, вы должны заполнить QListWidget, где каждый из элементов имеет текст метки и может быть связан с файлами. Затем вы связываете событие выбора элемента в списке, т. е. Clicked или doubleClicked, с функцией, которая определяет, какой элемент списка выбран в списке, извлекаете связанное имя файла, а затем выполняете команду, которую вы хотите вызвать внешней программой с именем файла в качестве ввода.

person Vince W.    schedule 30.06.2016
comment
Я бы предпочел использовать стандартную программу python IDLE, если это вообще возможно, чтобы сохранить вещи. - person LMP2016; 01.07.2016