Как выровнять кнопки по левому краю в tkinter?

#python #user-interface #tkinter

#питон #пользовательский интерфейс #tkinter

Вопрос:

Следующий код

 root = tk.Tk() frame = ttk.Frame(root, padding=10) frame.grid()  # Browse tk.Text(frame, state="disabled", height=1).grid(column=0, row=0, columnspan=3, sticky="W", pady=5, ipadx=2, ipady=2) ttk.Button(frame, text="Browse", command=None).grid(column=3, row=0, sticky="E")  # Selected files tk.Text(frame, state="disabled").grid(column=0, row=1, columnspan=4, sticky="EW", pady=10)  # Options ttk.Button(frame, text="SELECT", command=None).grid(column=0, row=2, sticky="W") ttk.Button(frame, text="DELETE", command=None).grid(column=1, row=2, sticky="W") ttk.Button(frame, text="Merge", command=None).grid(column=2, row=2, sticky="W")  ttk.Button(frame, text="Close", command=root.destroy).grid(column=3, row=2, sticky="E")  root.mainloop()  

производит это,

графический интерфейс пользователя

но я хочу DELETE MERGE , чтобы кнопки и были выровнены по левому краю, чтобы они были вместе с SELECT кнопкой. Как я могу этого достичь?

Комментарии:

1. Поместите кнопки в новую рамку, которую вы вставили в текущую рамку

Ответ №1:

Поместите кнопки в новую рамку, и эта рамка вставится в оригинальную рамку

 buttons_frame = ttk.Frame(frame) buttons_frame.grid(column=0, row=2, sticky="W")  ttk.Button(buttons_frame, text="SELECT", command=None).grid(column=0, row=2, sticky="W") ttk.Button(buttons_frame, text="DELETE", command=None).grid(column=1, row=2, sticky="W") ttk.Button(buttons_frame, text="Merge", command=None).grid(column=2, row=2, sticky="W")  

введите описание изображения здесь

кстати:

В buttons_frame вы можете даже использовать .pack(side='left') вместо grid()


Полный код:

 import tkinter as tk import tkinter.ttk as ttk  root = tk.Tk() frame = ttk.Frame(root, padding=10) frame.grid()  # Browse tk.Text(frame, state="disabled", height=1).grid(column=0, row=0, columnspan=3, sticky="W", pady=5, ipadx=2, ipady=2) ttk.Button(frame, text="Browse", command=None).grid(column=3, row=0, sticky="E")  # Selected files tk.Text(frame, state="disabled").grid(column=0, row=1, columnspan=4, sticky="EW", pady=10)  # Options buttons_frame = ttk.Frame(frame) buttons_frame.grid(column=0, row=2, sticky="W") ttk.Button(buttons_frame, text="SELECT", command=None).grid(column=0, row=2, sticky="W") ttk.Button(buttons_frame, text="DELETE", command=None).grid(column=1, row=2, sticky="W") ttk.Button(buttons_frame, text="Merge", command=None).grid(column=2, row=2, sticky="W")  ttk.Button(frame, text="Close", command=root.destroy).grid(column=3, row=2, sticky="E")  root.mainloop()  

Редактировать:

Вы также можете добавить столбец empy между Merge и Close и назначить weight=1 этому столбцу, чтобы он занимал все пустое место.

Его нужно переместить Browse и Close в следующий столбец, и увеличить columnspan в обоих Text

 import tkinter as tk import tkinter.ttk as ttk  root = tk.Tk() frame = ttk.Frame(root, padding=10) frame.grid()  frame.columnconfigure(3, weight=1) # column 3 will use all free space  # Browse tk.Text(frame, state="disabled", height=1).grid(column=0, row=0, columnspan=4, sticky="W", pady=5, ipadx=2, ipady=2) ttk.Button(frame, text="Browse", command=None).grid(column=4, row=0, sticky="E")  # Selected files tk.Text(frame, state="disabled").grid(column=0, row=1, columnspan=5, sticky="EW", pady=10)  # Options ttk.Button(frame, text="SELECT", command=None).grid(column=0, row=2, sticky="W") ttk.Button(frame, text="DELETE", command=None).grid(column=1, row=2, sticky="W") ttk.Button(frame, text="Merge", command=None).grid(column=2, row=2, sticky="W")  ttk.Button(frame, text="Close", command=root.destroy).grid(column=4, row=2, sticky="E")  root.mainloop()  

Комментарии:

1. Я добавил пример со свободной колонкой и columnconfigure(3, weight=1)