Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #102093

Re: tkinter newbie question

Newsgroups comp.lang.python
Date 2016-01-25 08:21 -0800
References <ce955291-9e43-4482-9f0c-ca3f6853b0ae@googlegroups.com> <mailman.215.1453711872.15297.python-list@python.org>
Message-ID <fe69e528-c1c8-4784-afd1-1b7df67a9b38@googlegroups.com> (permalink)
Subject Re: tkinter newbie question
From KP <kai.peters@gmail.com>

Show all headers | View raw


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?

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

tkinter newbie question KP <kai.peters@gmail.com> - 2016-01-24 20:19 -0800
  Re: tkinter newbie question Peter Otten <__peter__@web.de> - 2016-01-25 09:51 +0100
    Re: tkinter newbie question KP <kai.peters@gmail.com> - 2016-01-25 08:21 -0800
      Re: tkinter newbie question KP <kai.peters@gmail.com> - 2016-01-25 08:23 -0800
  Re: tkinter newbie question KP <kai.peters@gmail.com> - 2016-01-25 06:14 -0800

csiph-web