Création d'un Bouton Parcourir avec TKinter
Je suis en train d'écrire un peu de code dans laquelle l'utilisateur doit être en mesure de sélectionner un fichier que le programme sera exécuté sur. J'ai créé un bouton parcourir qui permet à l'utilisateur de sélectionner un fichier, mais quand vous cliquez sur " ok " le reste du programme ne se rend pas compte qu'il y a eu une entrée. Le nom de fichier doit également être saisis automatiquement dans il parcourez la barre après que le fichier a été sélectionné. Des suggestions?
from Tkinter import *
class Window:
def __init__(self, master):
#Browse Bar
csvfile=Label(root, text="File").grid(row=1, column=0)
bar=Entry(master).grid(row=1, column=1)
#Buttons
y=7
self.cbutton= Button(root, text="OK", command=master.destroy) #closes window
y+=1
self.cbutton.grid(row=10, column=3, sticky = W + E)
self.bbutton= Button(root, text="Browse", command=self.browsecsv)
self.bbutton.grid(row=1, column=3)
#-------------------------------------------------------------------------------------#
def browsecsv(self):
from tkFileDialog import askopenfilename
Tk().withdraw()
filename = askopenfilename()
#-------------------------------------------------------------------------------------#
import csv
with open('filename', 'rb') as csvfile:
logreader = csv.reader(csvfile, delimiter=',', quotechar='|')
rownum=0
for row in logreader:
NumColumns = len(row)
rownum += 1
Matrix = [[0 for x in xrange(NumColumns)] for x in xrange(rownum)]
csvfile.close()
root = Tk()
window=Window(root)
root.mainloop()
Vous devez vous connecter pour publier un commentaire.
vous pouvez également utiliser tkFileDialog..
filename = askopenfilename()
n'est connue que dans ce champ, vous devez le retourner ou de les utiliser de toute façon.Voir ce site pour plus d'exemples:
...
MODIFIER
Bryan Oakley est bien sûr! C'est ce que je voulais dire quand j'ai dit "utiliser" 😉
À un moment donné, vous choisissez un nom de fichier, à anoter, vous utilisez simplement
filename
.Comment à ce sujet?
Il est encore beaucoup à faire avec ça, mais au moins vous n'avez pas essayez d'ouvrir un fichier avant d'avoir déterminé son nom.
La racine du problème est que vous êtes en train de traiter le fichier avant que l'utilisateur a la possibilité de choisir un fichier.
Vous avez besoin de mettre le bloc de code commençant par
with open('filename', 'rb') as csvfile:
dans une fonction, puis d'appeler la fonction comme une conséquence de l'utilisateur en appuyant sur le bouton. Par exemple, on pourrait appeler cela de l'intérieur de labrowsecsv
fonction.Aussi, vous n'avez pas besoin
csv.close()
, qui vient gratuitement lors de l'utilisation de lawith
déclaration.J'ai édité le code ci-dessus à utiliser en python 3.6. Seuls les changements de nom