Search code examples
pythontkinteralignmentttk

How to align these checkbuttons in tkinter?


I want to ask, how to align these few checkbuttons in tkinter. I m using ttk. Checkbuttons, that I want to align to the LEFT

This is my code

button_frame=Frame(main, style='TFrame')
checks_frame=Frame(main, style='TFrame')
output_frame=Frame(main, style='TFrame')
start_button=Button(button_frame, text='START', command=lambda: _thread.start_new_thread(suspend_processes, ()), state=NORMAL, style='TButton')
stop_button=Button(button_frame, text='STOP', command=lambda: restore_all_processes(False, False), state=DISABLED, style='TButton')
restore_button=Button(button_frame, text='RESTORE', command=lambda: restore_all_processes(False, True), style='TButton')
scrollbar=Scrollbar(output_frame)
out=Text(output_frame, state=NORMAL, bg='white', width=50, height=10, spacing3=True, wrap=WORD, yscrollcommand=scrollbar.set, font=('Calibri'), foreground=theme)
strict_check=Checkbutton(checks_frame, text='Strict mode (FPS+)', variable=strict, command=switch_strict, style='TCheckbutton')
real_time_check=Checkbutton(checks_frame, text='Use real time priority (experimental, sound may lagg, FPS+)', state=NORMAL, command=switch_real_time, variable=real_time)
dis_game_sound_check=Checkbutton(checks_frame, text='Disable in game sound (recommended, FPS+)', state=DISABLED, command=switch_dis_game_sound, variable=dis_game_sound)
dis_grass_swaying_check=Checkbutton(checks_frame, text='Disable grass swaying (FPS+)', variable=dis_grass_swaying)
dis_per_pixel_point_lighting_check=Checkbutton(checks_frame, text='Disable per pixel point lighting (FPS+)', variable=dis_per_pixel_point_lighting)
slow_client_check=Checkbutton(checks_frame, text='Slow Client (max performance for client)', variable=slow_client)

button_frame                      .pack()
start_button                      .pack(side=LEFT)
stop_button                       .pack(side=LEFT)
restore_button                    .pack(side=LEFT)
checks_frame                      .pack(side=LEFT)
dis_per_pixel_point_lighting_check.pack()
dis_grass_swaying_check           .pack()
slow_client_check                 .pack()
strict_check                      .pack()
real_time_check                   .pack()
dis_game_sound_check              .pack()
output_frame                      .pack(side=RIGHT)
out                               .pack(side=LEFT, fill=BOTH, expand=True)
scrollbar                         .pack(side=LEFT, expand=True, fill=Y)

Please help me. Thanks for any response.


Solution

  • I believe you need to set the pack anchor attribute on each checkbutton widget. The default anchor is 'center', which is why they are aligned in the center of the container. So here is the fix.

    dis_per_pixel_point_lighting_check.pack(side=TOP, anchor=W)
    dis_grass_swaying_check           .pack(side=TOP, anchor=W)
    slow_client_check                 .pack(side=TOP, anchor=W)
    strict_check                      .pack(side=TOP, anchor=W)
    real_time_check                   .pack(side=TOP, anchor=W)
    dis_game_sound_check              .pack(side=TOP, anchor=W)