tkinter newbie question

KP kai.peters at gmail.com
Mon Jan 25 11:21:15 EST 2016


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?



More information about the Python-list mailing list