osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

tkinter newbie question


On Monday, 25 January 2016 08:22:12 UTC-8, KP  wrote:
> On Monday, 25 January 2016 00:51:34 UTC-8, Peter Otten  wrote:
> > KP wrote:
> > 
> > > See my code below (which works). 
> > 
> > >From the import of lowercase "tkinter" I conclude you are using Python 3.
> > 
> > > I'd like to have the 2nd window as a
> > > class in a separate unit. How do I code that unit and how do I call it
> > > from my first unit?
> > > 
> > > As always, thanks for all help!
> > 
> > Move the code from open_window2() into a class in settings.py, e. g.
> > 
> > 
> > import tkinter as tk # avoid star-import
> > 
> > class SettingsWindow(tk.Toplevel): # Class names start with uppercase letter
> >                                    # Prefer self-explaining names
> >     def __init__(self, root):
> >         super().__init__(root)
> >         self.title('New window')
> >         self.geometry('262x65+200+250')
> >         self.transient(root)
> > 
> > Then use it in your main script:
> > 
> > 
> > > #!/usr/bin/env python
> > > """
> > > """
> > > from tkinter import *
> > import settings
> > 
> > > class window1():
> > > 
> > >     def open_window2(self):
> >           settings.SettingsWindow(self.root)
> > 
> > >     def setup_menu(self):
> > >         self.menubar = Menu(self.root)
> > >         self.menu1 = Menu(self.menubar, tearoff=0 )
> > >         self.menu1.add_command(label="Settings",   accelerator='Ctrl+S',
> > >         command=self.open_window2) self.menubar.add_cascade(label="Menu
> > >         1", menu=self.menu1) self.root.config(menu=self.menubar)
> > > 
> > >     def __init__(self):
> > >         self.root = Tk()
> > >         self.root.title('Window #1')
> > >         self.setup_menu()
> > >         self.root.geometry('800x600+200+200')
> > >         #
> > >         self.root.mainloop()
> > > 
> > > if __name__ == '__main__':
> > >     
> > >     w1 = window1()
> 
> Dang - almost there. Using your code, I get the new window with the specified geometry and its type is transient, as expected.
> 
> Its caption, however, is NOT the caption specified, but the caption of the first window, leaving me with 2 windows with identical caption.
> 
> Any idea why?

Forget that post - mea culpa - figured it out - sorry!