2016-06-30 27 views
0

Der Anhang zeigt, was ich versuche zu erreichen.Python (tkinter) - Klicken Text öffnet Datei in der externen Anwendung

a) Das Programm liest eine CSV-Datei ein, die Namen von Songs enthält (song1 - song5 usw.).

b) die genauen Namen aus der CSV-Datei der Anzeige in einem Text-Widget dh das Widget zeigen song1, song2, Song 3 usw.

c) ein Benutzer einen dieses Namen klickt und das Programm sucht in einem Verzeichnis, das enthält diese genauen Namen aber mit einem MP3-Suffix, also song1.mp3, song2.mp3 usw. und lädt den vlc media player.

d) Die Songnamen unterscheiden sich offensichtlich im wirklichen Leben, aber ich wollte zeigen, dass die CSV, Text Widget und Windows Explorer Namen alle gemeinsam sind.

Ich muss verstehen, wie man dies ermöglicht.

1) Ich verstehe die csv Laden und die Text-Tagging, so dass der Benutzer weiß, wo

klicken

2) Ich habe nicht das Verfahren verstehen, wenn ein Benutzer auf den Text klickt, dh den Bereich, in dem arbeiten, Text-Widget, auf das der Benutzer geklickt hat und daraus eine Art Bindung zum Laden der Datei zu erstellen, müsste auch ein MP3-Suffix automatisch angehängt werden.

Program Overview

EDIT Arbeits-Code hinzugefügt

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

Es gibt ein paar feste Elemente, die den endgültigen Dateinamen und Pfad verwendet werden, um zu erzeugen, die nicht nämlich auf andere relevant sein können ‚Pfad‘ , 'Suffix', scheint aber nach Bedarf zu funktionieren :)

Antwort

-1

In Qt, das Sie mit Pyqt oder Pyside verwenden könnten, würden Sie ein QListWidget füllen, in dem jedes Element einen Beschriftungstext hat d kann mit Dateien verknüpft werden. Sie verbinden dann das Ereignis der Auswahl eines Elements in der Liste, dh Clicked oder doubleClicked mit einer Funktion, die bestimmt, welches Listenelement in der Liste ausgewählt ist, den zugehörigen Dateinamen abruft und dann den Befehl ausführt, der das externe Programm mit dem Dateinamen aufrufen soll als Eingabe.

+0

Ich würde gerne das Standard-Python-IDLE-Programm verwenden, wenn es überhaupt möglich ist, Dinge zu behalten. – LMP2016