Python'da Tkinter İçerisinde Görüntülenen Listbox Dosyalarını Açma
-
Merhaba arkadaşlar, bu hafta pythonla ilgili 2. konum olacak ama cidden saatlerce araştırıp çözemediğim meselelerde konu açıyorum.
Aşağıdaki kod ile bir klasörün içerisindeki dosyaları görebiliyorum. Beceremediğim şeyse şu; listeden bir dosya ismine tıkladığımda dosyayı açması. Şimdiden teşekkürler.
import tkinter as tk
import os
SENAR1ST tarafından 09/Eyl/19 15:52 tarihinde düzenlenmiştir
tkinter = tk.Tk()
tkinter.geometry('600x500+600+200')
adres= os.listdir(r'C:/')
listbox = tk.Listbox(tkinter)
listbox.place(relx=.1, rely=.1)
for item in adres:
listbox.insert(tk.END, item)
tkinter.mainloop() -
Tıklayınca açılma olayı için bir yöntem buldum ama şu hatayı alıyorum; 'dosya.xlsx' is not recognized as an internal or external command, operable program or batch file.
Yeni Kod:
import tkinter as tk
import os
tkinter = tk.Tk()
tkinter.geometry('600x500+600+200')
adres= os.listdir(r'C:/')
listbox = tk.Listbox(tkinter)
listbox.place(relx=.1, rely=.1)
for item in adres:
listbox.insert(tk.END, item)
def opensystem(event):
x = listbox.curselection()[0]
os.system(listbox.get(x))
listbox.bind("", opensystem)
tkinter.mainloop() -
subprocess kullanmayı denedin mi? kodu düzenleme fırsatım yok şu an fikir vermek istedim.
fonksiyon tanımla subprocess path i Explorer ile açsın.
-
SENAR1ST bunu yazdı
Tıklayınca açılma olayı için bir yöntem buldum ama şu hatayı alıyorum; 'dosya.xlsx' is not recognized as an internal or external command, operable program or batch file.
Yeni Kod:
import tkinter as tk
import os
tkinter = tk.Tk()
tkinter.geometry('600x500+600+200')
adres= os.listdir(r'C:/')
listbox = tk.Listbox(tkinter)
listbox.place(relx=.1, rely=.1)
for item in adres:
listbox.insert(tk.END, item)
def opensystem(event):
x = listbox.curselection()[0]
os.system(listbox.get(x))
listbox.bind("", opensystem)
tkinter.mainloop()"excel.exe c:/x/y/z/dosya.xlsx" yapman lazim muhtemelen.
-
# coding: utf-8 import tkinter as tk import subprocess import os def change_dir(dir): global current_dir L = os.listdir(dir) current_dir = dir listbox.delete(0, tk.END) listbox.insert(tk.END, '..') for item in L: listbox.insert(tk.END, item) current_dir = 'C:/' tkinter = tk.Tk() tkinter.geometry('600x500+600+200') listbox = tk.Listbox(tkinter) listbox.place(relx=.1, rely=.1) change_dir(current_dir) def opensystem(event): global current_dir x = listbox.curselection()[0] x = listbox.get(x) x = os.path.join(current_dir, x) if os.path.isdir(x): change_dir(x) else: subprocess.Popen(['start', x], shell=True) listbox.bind("<<ListboxSelect>>", opensystem) tkinter.mainloop()
-
Eğer excel dosyası açmak istiyorsan Win32API kullanmalısın hocam. Her dosya tipine göre tabi ki farklı tanımlar vs yapmalısın öyle her dosyayı açayım diye bir şey olmayacaktır.
https://stackoverflow.com/questions/40062841/multiprocessing-use-win32-api-to-modify-excel-cells-from-python -
YekteranBaymedir bunu yazdı
# coding: utf-8 import tkinter as tk import subprocess import os def change_dir(dir): global current_dir L = os.listdir(dir) current_dir = dir listbox.delete(0, tk.END) listbox.insert(tk.END, '..') for item in L: listbox.insert(tk.END, item) current_dir = 'C:/' tkinter = tk.Tk() tkinter.geometry('600x500+600+200') listbox = tk.Listbox(tkinter) listbox.place(relx=.1, rely=.1) change_dir(current_dir) def opensystem(event): global current_dir x = listbox.curselection()[0] x = listbox.get(x) x = os.path.join(current_dir, x) if os.path.isdir(x): change_dir(x) else: subprocess.Popen(['start', x], shell=True) listbox.bind("<>", opensystem) tkinter.mainloop()
Hocam efsanesin ya. Geçen konuda da senin yardımınla halletmiştim. Çok teşekkürler.
python listbox ile dosya görüntüleme listbox dosya açma tkinter listbox