Simple Tkinter problem

G

gmarkowsky

Hi all,

I'm trying to write a GUI that will put up multiple widgets in
succession. My problem is that each widget also contains the previous
widgets when they pop up. How do I reinitialize the widget each time so
that it doesn't contain earlier ones? Actually, another question I have
is, is there a way to set python so that it will assume any undefined
variable is 0 or ''? That is, I have several statements like "If k > 0
then so and so" and I would like it to assume k=0 unless I tell it
otherwise. I've just been defining k=0 at the start of the program but
it seems there should be a better way.

Greg
 
N

Neil Cerutti

I'm trying to write a GUI that will put up multiple widgets in
succession. My problem is that each widget also contains the
previous widgets when they pop up. How do I reinitialize the
widget each time so that it doesn't contain earlier ones?

Show your code.
Actually, another question I have is, is there a way to set
python so that it will assume any undefined variable is 0 or
''? That is, I have several statements like "If k > 0 then so
and so" and I would like it to assume k=0 unless I tell it
otherwise. I've just been defining k=0 at the start of the
program but it seems there should be a better way.

The best way to do it is to never use undefined names.
 
G

gmarkowsky

Here's my Tkinter class:

class TwoChoice:
def __init__(self, master):

frame = Frame(master)
frame.pack()
m = Label(root, text= maentry)
m.pack()
n = Label(root, text= fave)
n.pack()

self.button = Button(frame, text=home_team, command=
self.comm_1)
self.button.pack(side=LEFT)

self.hi_there = Button(frame, text=vis_team,
command=self.comm_2)
self.hi_there.pack(side=LEFT)

def comm_1(self):
print home_team
root.quit()

def comm_2(self):
print vis_team
root.quit()

I call it by

root = Tk()
gui= TwoChoice(root)
root.mainloop()

The next time I call it I want to just run the same thing but with
different values for the variables. Instead it gives me like two copies
of the widget.

Greg
 
J

jim-on-linux

Greg,

Run the following code to see how pack_forget() or
grid_forget() works, it makes previous widgets
disappear but not go away. If you call grid() or
pack() again after using grid_forget() the widget
returns.


root = Tk()
class Ktest:
def __init__(self):
self.Ftest1()

def Ftest1(self):

try:
self.test2.grid_forget()
except AttributeError :
pass
self.test1 = Button(root, text='Push #1
button', bg = 'yellow', width = 25,
command = self.Ftest2,
height = 25)
self.test1.grid(row=0, column=0)


def Ftest2(self):
self.test1.grid_forget()
self.test2 = Button(root, text='Push #2
button', bg = 'green',
width = 15,
command = self.Ftest1,
height = 10)
self.test2.grid(row=0, column=0)

if __name__== '__main__' :
Ktest()
mainloop()



Maybe someone else has an idea about not defining
a variable.

My question is how does a budket of wires and
screws know its a bucket of wires and screws
unless someone tells it that it's a bucket of
wires and screws?








On Tuesday 07 November 2006 09:35,
 
J

jim-on-linux

Greg,

Run the following code to see how pack_forget()
or grid_forget() works, it makes previous
widgets disappear but not go away. If you call
grid() or pack() again after using
grid_forget() the widget returns.


root = Tk()
class Ktest:
def __init__(self):
self.Ftest1()

def Ftest1(self):

try:
self.test2.grid_forget()
except AttributeError :
pass
self.test1 = Button(root, text='Push #1
button', bg = 'yellow',
width = 25,
command = self.Ftest2, height = 25)
self.test1.grid(row=0, column=0)


def Ftest2(self):
self.test1.grid_forget()
self.test2 = Button(root, text='Push #2
button', bg = 'green',
width = 15,
command = self.Ftest1,
height = 10)
self.test2.grid(row=0, column=0)

if __name__== '__main__' :
Ktest()
mainloop()



Maybe someone else has an idea about not
defining a variable.

My question is how does a budket of wires and
screws know its a bucket of wires and screws
unless someone tells it that it's a bucket of
wires and screws?

jim-on-linux

http://.www.inqvista.com
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top