Python Forum
Column headers not aligning properly with table
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Column headers not aligning properly with table
#3
Thanks for the response.
Setting the columns as uniform for both frames seems to fix the header alignment problem.
However, when I added a scrollbar to the second frame, the header alignment problem came back.
Also, the last column disappeared.
This probably has something to do with the canvas.
Any ideas on how to fix this would be appreciated.
Below is the code.
Thanks in advance.

from tkinter import *
from tkinter import ttk
from pathlib import Path

def data_table(frame,col_widths):
    # Create and populate values array
    for i in range(0,max_rows):
           values.append([])
           j = 0
           values[i].append(StringVar())
           cb = ttk.Combobox(frame,width=col_widths[j],textvariable=values[i][j])
           cb.grid(row=i,  column= j)

           j += 1
           values[i].append(StringVar())
           ent = Entry(frame,width=col_widths[j],textvariable=values[i][j])
           ent.grid(row=i,  column= j)

           j += 1
           values[i].append(StringVar())
           ent = Entry(frame,width=col_widths[j],textvariable=values[i][j])
           ent.grid(row=i,  column= j)

           j += 1
           values[i].append(BooleanVar())  # readonly
           cb = ttk.Checkbutton(frame,width=col_widths[j],onvalue=1,offvalue=0,variable=values[i][j])
           cb.grid(row=i,  column= j)

           j += 1
           values[i].append(BooleanVar())  # Copy
           cb = ttk.Checkbutton(frame,width=col_widths[j],onvalue=1,offvalue=0,variable=values[i][j])
           cb.grid(row=i,  column= j)

           j += 1
           values[i].append(BooleanVar())  # mandatory
           cb = ttk.Checkbutton(frame,width=col_widths[j],onvalue=1,offvalue=0,variable=values[i][j])
           cb.grid(row=i,  column= j)

           j += 1
           values[i].append(StringVar())  # sort order
           ent = Entry(frame,width=col_widths[j],textvariable=values[i][j])
           ent.grid(row=i,  column= j)

           j += 1
           values[i].append(BooleanVar())  # removed
           cb = ttk.Checkbutton(frame,width=col_widths[j],onvalue=1,offvalue=0,variable=values[i][j])
           cb.grid(row=i,  column= j)

def myfunction(event):
    canvas.configure(scrollregion=canvas.bbox("all"),width=1000,height=350)


current_file = Path(__file__).stem
root = Tk()
root.geometry('1000x500+200+150')
root.title(current_file)

root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)

mainframe = Frame(root)
mainframe.grid(column=0, row=0, sticky='new')
mainframe.grid_columnconfigure(0, weight=3)

headers = ["Field Name","Field Label","Default Value","ReadOnly","Copy","Mandatory","Sort Order","Remove"]
col_widths = [20,20,20,8,8,8,10,6]


frame1 = Frame(mainframe)
frame1.grid(column=0, row=0, sticky='new')
for i in range(8):
    frame1.grid_columnconfigure(i, weight=3, uniform='columns')


for i in range(8):
    header = Label(frame1, text=headers[i])
    header['relief'] = 'raised'
    header['borderwidth'] = 1
    header['highlightthickness'] = 1
    header['highlightbackground'] = 'grey65'
    header.grid(column=i, row=0, sticky='ew')

frame2 = Frame(mainframe)
frame2.grid(column=0, row=1, sticky='new')
"""
for i in range(8):
    frame2.columnconfigure(i, weight=3, uniform='table')
values = []
max_rows = 40
data_table(frame2,col_widths)
"""

canvas=Canvas(frame2)
frame=Frame(canvas)
myscrollbar=Scrollbar(frame2,orient="vertical",command=canvas.yview)
canvas.configure(yscrollcommand=myscrollbar.set)
myscrollbar.pack(side="right",fill="y")
canvas.pack(side="left")
canvas.create_window((0,0),window=frame,anchor='nw')
frame.bind("<Configure>",myfunction)
for i in range(8):
    frame.columnconfigure(i, weight=3, uniform='table')

values = []
max_rows = 40
data_table(frame,col_widths)

root.mainloop()
Reply


Messages In This Thread
RE: Column headers not aligning properly with table - by kenwatts275 - Jul-12-2020, 03:02 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  [Tkinter] Aligning Python Tkinter Buttons In Rows TollyThaWally 3 8,124 Feb-22-2018, 02:56 AM
Last Post: woooee
  which column of sql table is equal to a variable gray 7 6,193 Mar-20-2017, 04:11 AM
Last Post: nilamo

Forum Jump:

User Panel Messages

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