Hi.
I have written a simple GUI program. It works just like it is intended to do, but there is a problem, I feel like I could make it shorter. I thought of using classes instead of
doing it the way I have done.

Here is my code:

from tkinter import*

button1_color="green"
button1_value=False

button2_color="green"
button2_value=False


class Window(Frame):
   def __init__(self,master):
       super (Window,self).__init__(master)
       self.grid()
       self.create_widgets()

   def create_widgets(self):

       #Creates hello button1
       self.hello_bttn1=Button(self,bg=button1_color, text="Hi_1",
command=self.button1_clicked)
       self.hello_bttn1.grid()

       #Creates hello button2
       self.hello_bttn2=Button(self,bg=button2_color, text="Hi_1",
command=self.button2_clicked)
       self.hello_bttn2.grid()



   def button1_clicked(self):
       """ This method runs if button one is clicked"""

       def change_button1_value():
           global button1_value
           button1_value=not button1_value

       change_button1_value()

       if button1_value:

           self.hello_bttn1.configure(bg="red", text="Hi_2")

           def change_button1_color_red():
               global button1_color
               button1_color=("red")
           change_button1_color_red()




       else:
           self.hello_bttn1.configure(bg="green", text="Hi_1")




           def change_button1_color_green():
               global button1_color
               button1_color=("green")
           change_button1_color_green()

           #-------------------------------------------------

   def button2_clicked(self):
       """This method runs if button two is clicked"""

       def change_button2_value():
           global button2_value
           button2_value=not button2_value

       change_button2_value()

       if button2_value:

           self.hello_bttn2.configure(bg="red", text="Hi_2")



           def change_button2_color_red():
               global button2_color
               button2_color=("red")
           change_button2_color_red()




       else:
           self.hello_bttn2.configure(text="Hi_1", bg="green")




           def change_button2_color_green():
               global button2_color
               button2_color=("green")
           change_button2_color_green()




As you can button1_clicked and button2_clicked are very similiar. Imagine
that I would use more buttons than just the two that I am using now.

It would be a lot of functions then, one for each button. How do I accomplish
the same thing as my code does now, but using one function for all buttons
instead of one function for each button? Is it possible?

I hope these questions aren't stupid.

Thank you for your time!


Mic














root=Tk()
root.title("Test")
root.geometry("200x200")
app=Window(root)
root.mainloop()

_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to