[Tkinter] [python]Problem in creating menu[/python] - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: GUI (https://python-forum.io/forum-10.html) +--- Thread: [Tkinter] [python]Problem in creating menu[/python] (/thread-11924.html) Pages:
1
2
|
RE: [python]Problem in creating menu[/python] - Larz60+ - Aug-01-2018 This shouldn't be difficult, but I couldn't pin it down. I did add the following to the code I posted before, to see how the internal dictionary for the menu was constructed, but didn't want to spend more time breaking down the references: from tkinter import * from tkinter import ttk from tkinter import messagebox from tkinter import filedialog import numpy as np import pprint 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 pretty(self, mydict, indent=0, fileptr=None): for key, value in mydict.items(): if fileptr: fileptr.write(f"{' ' * indent}{key}\n") else: print(f"{' ' * indent}{key}") if isinstance(value, dict): pretty(value, indent+1) else: if fileptr: fileptr.write(f"{' ' * (indent+1)}{value}\n") else: print(f"{' ' * (indent+1)}{value}") 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) options = file.config() with open('options.txt', 'w') as fp: self.pretty(options, indent=4, fileptr=fp) # print(json.dumps(options, indent=1)) # 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()contents of options.txt file:
|