tkinter newbie question
Peter Otten
__peter__ at web.de
Mon Jan 25 03:51:00 EST 2016
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()
More information about the Python-list
mailing list