python - Tkinter example code for multiple windows, why won't buttons load correctly? -
there must obvious why code wrong. i'm hoping able point out.
i new @ python , newer @ tkinter. can tell? ; )
the reason using classes sample code me jist of things, inserted larger program.
i tried keep simple possible. want program to:
- open window press of button.
close newly opened window press of button.
import tkinter tk tkinter import * tkinter import ttk class demo1( frame ): def __init__( self ): tk.frame.__init__(self) self.pack() self.master.title("demo 1") self.button1 = button( self, text = "button 1", width = 25, command = self.new_window ) self.button1.grid( row = 0, column = 1, columnspan = 2, sticky = w+e+n+s ) def new_window(self): self.newwindow = demo2() class demo2(frame): def __init__(self): new =tk.frame.__init__(self) new = toplevel(self) new.title("demo 2") new.button = tk.button( text = "button 2", width = 25, command = self.close_window ) new.button.pack() def close_window(self): self.destroy() def main(): demo1().mainloop() if __name__ == '__main__': main()
i rewrote code in more organized, better-practiced way:
import tkinter tk class demo1: def __init__(self, master): self.master = master self.frame = tk.frame(self.master) self.button1 = tk.button(self.frame, text = 'new window', width = 25, command = self.new_window) self.button1.pack() self.frame.pack() def new_window(self): self.newwindow = tk.toplevel(self.master) self.app = demo2(self.newwindow) class demo2: def __init__(self, master): self.master = master self.frame = tk.frame(self.master) self.quitbutton = tk.button(self.frame, text = 'quit', width = 25, command = self.close_windows) self.quitbutton.pack() self.frame.pack() def close_windows(self): self.master.destroy() def main(): root = tk.tk() app = demo1(root) root.mainloop() if __name__ == '__main__': main()
Comments
Post a Comment