Python Forum
[Tkinter] tkiner spacing on a canvas help
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tkinter] tkiner spacing on a canvas help
#1
Hello,

Trying to learn tkinter, by "doing." I could just write a script, or use many or endless backup applications, so ignore that =) Focus on the layout please. Tongue

My main issue is removing the space at the bottom of the "innerwindows" Canvas. I have two elements inside there, but can't figure out how to eliminate the space between the 2 labelFrames, and the buttons section. Any help or any other tips would be greatly appreciated.

from tkinter import *

root = Tk()

#setting a minimum size
mainFrame = Frame(root, root.minsize(612, 715))
mainFrame.grid(row=0, column=0)

#set main title
root.title("Backup Utility")


#--------------- program functions-------------------------

# quit program

# select a source (include path)

# select a destination (include path)

# execute backup

# display "About information"


def doNothing():
    #eventually will put something useful here
    print("Ok ok, I won't...")
     
     
     
#---------------- File menu and it's items ----------------
menu = Menu(root)
root.config(menu=menu)
 
subMenu = Menu(menu)
menu.add_cascade(label="File", menu=subMenu)
 
subMenu.add_command(label="Open File", command=doNothing)
subMenu.add_command(label="Close", command=doNothing)
#create "separator"
subMenu.add_separator()
subMenu.add_command(label="Exit", command=exit)
 
editMenu = Menu(menu)
menu.add_cascade(label="Edit", menu=editMenu)
editMenu.add_command(label="Redo", command=doNothing)

helpMenu = Menu(menu)
menu.add_cascade(label="Help", menu=helpMenu)
helpMenu.add_command(label="About", command=doNothing)

# create a canvas to hold the "top and bottom" frames

#inner primary windows
innerwindows = LabelFrame(root, bd=3)
innerwindows.grid(row=0, column=0, rowspan=2, columnspan=2)

#--------------------Top canvas/Source UI -----------------------

top_canvas = LabelFrame(innerwindows, text="SOURCES: ", bd=3, relief=RIDGE)
top_canvas.grid(row=0, column=0, rowspan=2, columnspan=4, sticky="n", padx=20, pady=10, ipadx=200, ipady=40)

top_canvas_inner = Frame(top_canvas, bd=1, relief=GROOVE)
top_canvas_inner.grid(row=0, padx=12, pady=8)

#make these into input variable(4 max)

result1 = Label(top_canvas_inner, text="blah blah text here")
result1.grid(row=0, column=0, padx=4, pady=4)

result2 = Label(top_canvas_inner, text="ho ho ho")
result2.grid(row=1, column=0, padx=4, pady=4)

result3 = Label(top_canvas_inner, text="heh hehe hee")
result3.grid(row=2, column=0, padx=4, pady=4)

result4 = Label(top_canvas_inner, text="boo")
result4.grid(row=3, column=0, padx=4, pady=4)


#---------------  Bottom canvas/Destination UI ------------------


bottom_canvas = LabelFrame(innerwindows, text="DESTINATION: ", bd=3, relief=RIDGE)
bottom_canvas.grid(row=0, column=0, rowspan=2, columnspan=4, sticky="n", padx=20, pady=250, ipadx=200, ipady=40)

bottom_canvas_inner = Frame(bottom_canvas, bd=1, relief=GROOVE)
bottom_canvas_inner.grid(row=0, padx=12, pady=8)

result1 = Label(bottom_canvas_inner, text="blah blah text here")
result1.grid(row=0, column=0, padx=4, pady=4)



#----------------  Program Buttons section ----------------------

button_canvas = LabelFrame(innerwindows)
#button_portion = Label(button_canvas, text="Buttons here.")
#button_portion.pack(fill="both", expand=True)
button_canvas.grid(row=1, column=0, columnspan=4, sticky="s", padx=10, pady=10)

button1 = Button(button_canvas, text="Select Source", font="Times", width=12, relief=RAISED, bd=2)
button1.grid(row=2, column=0, padx=10, pady=10)

button2 = Button(button_canvas, text="Destination", font="Times", width=12, relief=RAISED, bd=2)
button2.grid(row=2, column=1, padx=10, pady=10)

button3 = Button(button_canvas, text="Backup File(s)", font="Times", width=12, relief=RAISED, bd=2)
button3.grid(row=2, column=2, padx=10, pady=10)

button4 = Button(button_canvas, text="Quit", font="Times", width=12, relief=RAISED, bd=2)
button4.grid(row=2, column=3, padx=10, pady=10)



#-------------------- Status bar ------------------------------
status_frame = Frame(root)
status = Label(status_frame, text="Preparing for backup..", bd=1, relief=SUNKEN, anchor=W)
status.pack(fill="both", expand=True)
status_frame.grid(row=3, column=0, columnspan=4, sticky="ew")




root.grid_rowconfigure(1, weight=1)
root.grid_columnconfigure(1, weight=1)


root.mainloop()
Reply
#2
Figured it out.
innerwindows = LabelFrame(root, width=600, height=500, bd=3)
innerwindows.grid_propagate(False)
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  [Kivy] Weird spacing in grid layout test 3 3,455 Nov-08-2019, 04:37 PM
Last Post: Axel_Erfurt
  Spacing Between two labels are very far and Top label is not in Center using Tkinter barry76 2 7,066 Jul-30-2019, 10:49 AM
Last Post: wuf
  [Tkinter] Resizing image inside Canvas (with Canvas' resize) Gupi 2 25,098 Jun-04-2019, 05:05 AM
Last Post: Gupi

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020