python - Cannot Use Geometry Manager Grid inside . which already has slaves managed by pack -
so i'm writing small application, , error:
cannot use geometry manager grid inside . has slaves managed pack
import tkinter tk tkinter import ttk large_font = ("times new roman", 16) normal_font = ("times new roman", 12) def popup(title, string): popup = tk.tk() popup.geometry('300x100') popup.wm_title(title) label = ttk.label(popup, text=string) label.pack(pady=10) b1 = ttk.button(popup, text='okay', command=lambda:popup.destroy()) b1.pack(pady=10) class fecapp(tk.tk): def __init__(self, *args, **kwargs): tk.tk.__init__(self, *args, **kwargs) container = tk.frame(self) container.pack(side='top', fill='both', expand=true) container.grid_rowconfigure(0, weight=1) container.grid_columnconfigure(0, weight=1) tk.tk.iconbitmap(self, default='icon.ico') tk.tk.wm_title(self, 'family entertainment center management system') menu = tk.menu(container) file = tk.menu(menu) file.add_command(label='login', command=lambda:popup('not supported', 'this function not supported yet.')) file.add_separator() file.add_command(label='save changes', command=lambda:popup('not supported', 'this function not supported yet.')) file.add_separator() file.add_command(label='exit', command=lambda:exit()) menu.add_cascade(label='file', menu=file) navigate = tk.menu(menu) navigate.add_command(label='home', command=lambda:self.show_frame(startpage)) navigate.add_command(label='employee list', command=lambda:self.show_frame(page1)) menu.add_cascade(label='navigate', menu=navigate) tk.tk.config(self, menu=menu) self.frames = {} f in (startpage, page1): frame = f(container, self) self.frames[f]=frame frame.grid(row=0, column=0, sticky='nsew') self.show_frame(startpage) def show_frame(self, cont): frame = self.frames[cont] frame.tkraise() class startpage(tk.frame): def __init__(self, parent, controller): tk.frame.__init__(self, parent) self.grid_rowconfigure(0, weight=1) self.grid_columnconfigure(0, weight=1) label1 = ttk.label(text="oops!", font=large_font) #label1.pack(side='top', fill='y', expand=true) label1.grid(row=0, column=0, sticky='ns') label1 = ttk.label(text="there doesn't seem here right now.", font=normal_font) #label1.pack(side='top',fill='y', expand=true) label1.grid(row=1, column=0, sticky='ns') class page1(tk.frame): def __init__(self, parent, controller): tk.frame.__init__(self, parent) listbox = multilistbox(self,[('row 1', 1, 'mein pooper'),('row 2', 2, 'mein pooper'),('row 3', 3, 'my asshole'),('row 4', 4, 'mein pooper')],['row', 'row (int)', 'christmas list']) listbox.pack() #since tkinter has no multicolumn listbox, suppose i'll make own... class multilistbox(ttk.frame): def __init__(self, master, data, headings): ttk.frame.__init__(self, master) self.data=data self.tree = ttk.treeview(self, columns=headings, show='headings') head in headings: self.tree.heading(head, text=head) self.tree.pack() app = fecapp() app.geometry('1280x720') app.mainloop()
it gets fussy in startpage.__init__() start add labels using grid, can't see anywhere i'm using pack in startpage or on startpage. missing something?
the widgets in pages have wrong parent. aren't specifying parent defaults root window, , using pack
in root window.
Comments
Post a Comment