Python (tkinter) - การคลิกข้อความจะเปิดไฟล์ในแอปพลิเคชันภายนอก

เอกสารแนบนี้แสดงสิ่งที่ฉันพยายามทำให้สำเร็จ

ก) โปรแกรมอ่านเป็นไฟล์ csv ที่มีชื่อเพลง (song1 - song5 ฯลฯ)

b) ชื่อที่แน่นอนจากการแสดงไฟล์ CSV ในวิดเจ็ตข้อความ เช่น วิดเจ็ตแสดง song1, song2, เพลง 3 เป็นต้น

c) ผู้ใช้คลิกหนึ่งในชื่อเหล่านั้น และโปรแกรมจะค้นหาในไดเรกทอรีที่มีชื่อที่แน่นอนเหล่านั้น แต่มีคำต่อท้าย mp3 เช่น song1.mp3, song2.mp3 ฯลฯ และโหลด vlc media player

ง) ชื่อเพลงแตกต่างอย่างเห็นได้ชัดในชีวิตจริง แต่ฉันต้องการแสดงให้เห็นว่าชื่อ CSV วิดเจ็ตข้อความ และ windows explorer ล้วนเป็นเรื่องธรรมดา

ฉันต้องเข้าใจว่าจะทำให้สิ่งนี้เกิดขึ้นได้อย่างไร

1) ฉันเข้าใจการโหลด csv และแท็กข้อความ เพื่อให้ผู้ใช้รู้ว่าจะต้องคลิกที่ไหน

2) ฉันไม่เข้าใจขั้นตอนเมื่อผู้ใช้คลิกข้อความ เช่น วิธีหาพื้นที่ในวิดเจ็ตข้อความที่ผู้ใช้คลิก และวิธีการสร้างการเชื่อมโยงเพื่อโหลดไฟล์ ส่วนต่อท้าย mp3 จะต้องเป็น แนบโดยอัตโนมัติด้วย

ภาพรวมโปรแกรม

แก้ไข เพิ่มรหัสการทำงานแล้ว

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 โดยที่แต่ละรายการมีข้อความป้ายกำกับและสามารถเชื่อมโยงกับไฟล์ได้ จากนั้นคุณเชื่อมต่อเหตุการณ์ของการเลือกรายการในรายการ เช่น คลิกหรือดับเบิลคลิกด้วยฟังก์ชันที่กำหนดว่ารายการใดจะถูกเลือกในรายการ ดึงชื่อไฟล์ที่เกี่ยวข้อง จากนั้นดำเนินการคำสั่งที่คุณต้องการเรียกใช้โปรแกรมภายนอกด้วยชื่อไฟล์ เป็นอินพุต

person Vince W.    schedule 30.06.2016
comment
ฉันอยากจะใช้โปรแกรม python IDLE มาตรฐานหากเป็นไปได้เพื่อเก็บสิ่งต่าง ๆ - person LMP2016; 01.07.2016