Aug-01-2018, 05:44 AM
I've saved the menu details in a dictionary, then I was trying to call it to create menu by using loop but its not working, can any body here help to find the solution and here is my code
from tkinter import * from tkinter import ttk from tkinter import messagebox from tkinter import filedialog import numpy as np file_menu_dict = {'Open' : 'self.open_file()' , 'Save' : '', 'Save as': '', 'Print' : '', 'Close' : '', 'Exit' : '', } class My_actions(): def __init__(self):#, **kwds): pass def open_file(self ): file_name = filedialog.askopenfilename(filetypes=(("PNG","*.png"),("Gif","*.gif"),("All files","*.*"))) image_file = open(file_name).read() print(image_file) def all_menu(self, main_menu , all_menu_dict): #File menu for i,j in all_menu_dict.items(): main_menu.add_command( label = i, command = lambda : j) class My_frame(My_actions):#My_actions): def __init__(self, **kwds): super().__init__() #Menu frame start self.menu_frame = LabelFrame(kwds['root'] ) self.menu_frame.background = 'red' self.menu_frame.grid(row = 2, column = 0, columnspan=4, sticky= kwds['sticky'])#side = menu_side) #Menu frame end def all_menu_frame(self, root): #menu start here menubar = Menu(self.menu_frame) root.config(menu = menubar) file = Menu(menubar) menubar.add_cascade(menu=file, label="File") # Method to call file menu self.all_menu(file, file_menu_dict) #menu end here #Class my frame for both menu & status menu end here def main(): root = Tk() window_size_x=0 window_size_y=0 root.geometry("%dx%d+%d+%d" %(root.winfo_screenwidth(), root.winfo_screenheight(), window_size_x, window_size_y)) actions = My_frame( root=root, frame_width=400, frame_height =50, sticky='S') actions.all_menu_frame(root = root) root.mainloop() if __name__ == '__main__' : main()