Setting up the widgets and controlling their appearance and location.
from Tkinter import *
class MyApp:
def __init__(self, parent):
button_width = 6
button_padx = "2m"
button_pady = "1m"
buttons_frame_padx = "3m"
buttons_frame_pady = "2m"
buttons_frame_ipadx = "3m"
buttons_frame_ipady = "1m"
self.myParent = parent
self.buttons_frame = Frame(parent)
self.buttons_frame.pack(
ipadx=buttons_frame_ipadx,
ipady=buttons_frame_ipady,
padx=buttons_frame_padx,
pady=buttons_frame_pady,
)
self.button1 = Button(self.buttons_frame, command=self.button1Click)
self.button1.configure(text="OK", background= "green")
self.button1.focus_force()
self.button1.configure(
width=button_width,
padx=button_padx,
pady=button_pady
)
self.button1.pack(side=LEFT)
self.button1.bind("<Return>", self.button1Click_a)
self.button2 = Button(self.buttons_frame, command=self.button2Click)
self.button2.configure(text="Cancel", background="red")
self.button2.configure(
width=button_width,
padx=button_padx,
pady=button_pady
)
self.button2.pack(side=RIGHT)
self.button2.bind("<Return>", self.button2Click_a)
def button1Click(self):
if self.button1["background"] == "green":
self.button1["background"] = "yellow"
else:
self.button1["background"] = "green"
def button2Click(self):
self.myParent.destroy()
def button1Click_a(self, event):
self.button1Click()
def button2Click_a(self, event):
self.button2Click()
root = Tk()
myapp = MyApp(root)
root.mainloop()
Related examples in the same category
1. | Layout: anchor NW, W and E | | |
2. | Layout: anchor W side TOP | | |
3. | Layout: side TOP, LEFT | | |
4. | Layout: side TOP and LEFT | | |
5. | Layout: LEFT LEFT and LEFT | | |
6. | Layout: fit text side | | |
7. | Layout: side TOP LEFT LEFT | | |
8. | Layout: frame fill BOTH expand YES | | |
9. | Layout: pack side LEFT and expand YES | | |
10. | Layout: TOP, CENTER and BOTTOM | | |
11. | Layout: top, center and bottom fill | | |
12. | Layout: side LEFT and fill | | |
13. | Layout: fill X | | |
14. | Layout: fill X and Expand YES NO | | |
15. | Layout: fill X and expand YES | | |
16. | Layout: side TOP and fill X | | |
17. | Use layout: fill | | |
18. | Use pack for a frame | | |
19. | Set expand to YES and fill to BOTH | | |
20. | Add a label to the top of a frame | | |
21. | Add a label to the center of a frame | | |
22. | Adds multi-widget layouts: TOP, RIGHT and LEFT | | |
23. | Alternative packing/clipping order: LEFT, RIGHT and TOP | | |
24. | Creation order irrelevant to clipping | | |
25. | Packing order and sides determine layout: make parents expandable | | |
26. | Use anchor to position, instead of fill to stretch | | |
27. | Layout button in a row with different padx | | |
28. | Layout components in grid | | |
29. | Layout three button in a row | | |
30. | Pack side in TOP | | |
31. | Nested containers | | |
32. | Creating a GUI object and associating it with its parent: packing, containers vs. widgets | | |
33. | Using the grid geometry manager | | |
34. | Set positions for components | | |
35. | Pack side RIGHT and LEFT | | |
36. | Pack layout manager:Button component placed against top of window | | |
37. | Pack layout manager: component placed against bottom of window, fills all available vertical and horizontal space | | |
38. | Component Placed against left side of window, fills all available horizontal space | | |
39. | Component Placed against right side of window, fills all available vertical space | | |