Simple Tkinter problem

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • gmarkowsky@gmail.com

    #1

    Simple Tkinter problem

    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

  • Neil Cerutti

    #2
    Re: Simple Tkinter problem

    On 2006-11-07, gmarkowsky@gmai l.com <gmarkowsky@gma il.comwrote:
    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.

    --
    Neil Cerutti
    If only faces could talk. --Pat Summerall

    Comment

    • gmarkowsky@gmail.com

      #3
      Re: Simple Tkinter problem

      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.pac k(side=LEFT)

      self.hi_there = Button(frame, text=vis_team,
      command=self.co mm_2)
      self.hi_there.p ack(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

      Neil Cerutti wrote:
      On 2006-11-07, gmarkowsky@gmai l.com <gmarkowsky@gma il.comwrote:
      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.
      >
      --
      Neil Cerutti
      If only faces could talk. --Pat Summerall

      Comment

      • jim-on-linux

        #4
        Re: Simple Tkinter problem


        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,
        gmarkowsky@gmai l.com wrote:
        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

        Comment

        • jim-on-linux

          #5
          Re: Simple Tkinter problem

          On Tuesday 07 November 2006 10:38, jim-on-linux
          wrote:
          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
          >
          >
          >
          >
          >
          On Tuesday 07 November 2006 09:35,
          >
          gmarkowsky@gmai l.com wrote:
          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

          Comment

          Working...