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:

  1. open window press of button.
  2. 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

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -