J'ai créé des fonctions qui peuvent afficher des graphiques et des tableaux de fichiers CSV dans une interface graphique que je crée avec tkinter.Nom du fichier de magasin Tkinter via le bouton de barre de menus
J'ai un menubar
avec un bouton d'importation, un bouton de terrain, et un bouton de table . Le bouton plot et table peuvent respectivement tracer des graphiques et des tables de fichiers csv.
Ce que je voudrais faire, c'est quand l'utilisateur sélectionne le bouton importation, ils choisissent un fichier de leur choix. Ensuite, s'il leur arrive de sélectionner le bouton plot, la fonction de tracé fonctionne sur le fichier qu'ils ont choisi parmi et. De plus, s'il leur arrive de sélectionner le bouton table, la fonction table fonctionne sur le fichier qu'ils ont choisi parmi et.
J'ai créé une fonction d'ouverture de fichier appelée openfile()
qui se souvient du nom du fichier ouvert.
Le problème est que je ne sais pas comment utiliser menubar
et openfile()
tels lorsque le bouton d'importation est cliquée, mes magasins d'application du nom de fichier.
Des conseils sur la façon dont j'irais faire cela?
Voici le code que j'ai écrit pour le menubar
et openfile()
:
def openfile():
name= askopenfilename()
return (name[19:])
class MyApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.wm_title(self, "MyApp")
# main frame
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
# creates the menubar at the top of the window
menubar = tk.Menu(container)
# import menu for importing csv files, initializes a file opening function (tbd)
filemenu = tk.Menu(menubar, tearoff=0)
filemenu.add_command(label="Import a CSV File", command = file_openerfunction)
menubar.add_cascade(label= "Import", menu=filemenu)
# plot menu for creating graphs and figures
Plot = tk.Menu(menubar, tearoff =0)
Plot.add_command(label="Plot My CSV File", command= popupgraph)
menubar.add_cascade(label="Plot", menu=Plot)
# table menu for viewing data in a table
table = tk.Menu(menubar, tearoff = 0)
table.add_command(label="View MY CSV File", command = table)
table.add_cascade(label = "View Data", menu = table)
tk.Tk.config(self, menu=table)
....
....
Merci une tonne! Cela fonctionne très bien. Je vais suivre votre conseil et changer mon code en une approche plus orientée objet. En ce qui concerne le problème d'ouverture de fichier, j'ai trouvé un moyen très simple pour l'interface graphique de se souvenir du fichier sélectionné: avoir le fichier sélectionné être stocké dans une liste, puis appeler popupgraph sur l'élément de la liste. –
Pourquoi votre exemple a-t-il deux classes nommées 'MyPlot'? –
@BryanOakley faute de frappe. Pardon. Modification maintenant – otorrillas