Aug-01-2018, 10:09 AM
the open function can't be a string for it to execute it need to be a function pointer, it also needs to
somehow run menu.command, i tried the following, but it also does not work:
somehow run menu.command, i tried the following, but it also does not work:
from tkinter import * from tkinter import ttk from tkinter import messagebox from tkinter import filedialog import numpy as np class My_actions(): def __init__(self):#, **kwds): pass def open_file(self ): print('Trying to open') 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__() self.file_menu_dict = { 'Open' : self.open_file, 'Save' : '', 'Save as': '', 'Print' : '', 'Close' : '', 'Exit' : '', } #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) file = Menu(menubar) menubar.add_cascade(menu=file, label="File") root.config(menu = menubar) # Method to call file menu self.all_menu(file, self.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()However this does:
from tkinter import * from tkinter import ttk from tkinter import messagebox from tkinter import filedialog import numpy as np class My_actions(): def __init__(self):#, **kwds): pass def open_file(self ): print('Trying to open') file_name = filedialog.askopenfilename(filetypes=(("PNG","*.png"),("Gif","*.gif"),("All files","*.*"))) image_file = open(file_name).read() print(image_file) def save_file(self): pass def save_as_file(self): pass def print_file(self): pass def close_file(self): pass def prog_exit(self): pass # 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__() # self.file_menu_dict = { # 'Open' : self.open_file, # 'Save' : '', # 'Save as': '', # 'Print' : '', # 'Close' : '', # 'Exit' : '', # } #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) file = Menu(menubar) menubar.add_cascade(menu=file, label="File") root.config(menu = menubar) # Method to call file menu file.add_command(label="Open", command=self.open_file) file.add_command(label="Save", command=self.save_file) file.add_command(label="Save as", command=self.save_as_file) file.add_command(label="Print", command=self.print_file) file.add_command(label="Close", command=self.close_file) file.add_command(label="Exit", command=self.prog_exit) # self.all_menu(file, self.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()