[Tutor] Creating arbitrary number of destinations. (GUI program)

Alan Gauld alan.gauld at btinternet.com
Wed Dec 7 00:53:28 CET 2011


On 06/12/11 12:10, Mic wrote:

> from tkinter import*
> import tkinter as tk

You only need one of these two lines, the second is
probably best.


> import os
> NUMBEROFCHAIRS=32
>
> class ChooseDestinationWindow(Frame):
> def __init__(self,master):
> super(ChooseDestinationWindow,self).__init__(master)
> self.grid()
> self.create_different_destinations()
>
> def create_different_destinations(self):
> self.destination1=Button(self,
> text="Destination1",command=self.Destination1_function)
> self.destination1.grid()
>
> self.destination2=Button(self, text="Destination2")
> self.destination2.grid()
>
> self.destination3=Button(self,text="Destination3")
> self.destination3.grid()


OK, that should work except you haven't set the command value to the 
function that creates the seat booking window. You probabvly also want 
to set the filename here too.


> def Destination1_function(self):
> class Seats_Destination1(tk.Button):

I see you are still defining your classes inside yoyur functions. It 
really is more normal (and useful) to define them all at the top level.
It also makes your functions easier to read!


> class Destination1_Chairs(Frame):

This is the thing you want to call from your destination buttons. So 
create a method in the top level window that creates one of these objects.

> root=Tk()
> root.title("Booking Window")
> app=Destination1_Chairs(root)
> root.mainloop()
>
>
> root=Tk()
> root.title("Choose your destination")
> root.geometry("900x200")
> app=ChooseDestinationWindow(root)
> root.mainloop()

And you still have multiple root objects and multiple
mainloops. That's bad practice and it will bite you
eventually.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/



More information about the Tutor mailing list