Помогите с окном tkinter
Хочу сделать точно такое же окно в tkinter (но без иконки), но не знаю как выровнить кнопки, добавить текст.
Вот что у меня получилось:
from tkinter import *
from tkinter import messagebox
def display_full_name():
messagebox.showinfo("Имя пользователя + пароль", name.get() + " " + surname.get())
root = Tk()
root.title("Вас приветствует Windows")
name = StringVar()
surname = StringVar()
name_label = Label(text="Имя пользователя:")
surname_label = Label(text="Пароль:")
name_label.grid(row=0, column=0, sticky="w")
surname_label.grid(row=1, column=0, sticky="w")
name_entry = Entry(textvariable=name)
surname_entry = Entry(textvariable=surname)
name_entry.grid(row=0,column=1, padx=5, pady=3)
surname_entry.grid(row=1,column=1, padx=5, pady=3)
message_button = Button(text="Отмена", command=display_full_name)
message_button.grid(row=1,column=2, padx=5, pady=3, sticky="e")
message_button = Button(text="ОК", command=display_full_name)
message_button.grid(row=0,column=2, padx=10, pady=3, sticky="e")
root.mainloop()
Ответы (1 шт):
Чтобы разместить объекты в сетке (grid) удобно сначала нарисовать саму сетку поверх интерфейса:

Текст добавляете как объект Label, точно так же как подписи к текстовым полям. Размещаете в нужной строке (row) и колонке (column). Т.к. текст занимает по вертикали и горизонтали больше одной ячейки, при размещении нужно через параметры rowspan и columnspan указать сколько ячеек в высоту и в ширину это поле занимает:
info = Label(text="Для входа...\n(Переключение раскладки ....)", justify=LEFT) # выравнивание текста по левому краю
info.grid(row=0, column=0, rowspan=2, columnspan=2, sticky="nw") # nw - прилипание виджета к северо-западу (влево вверх)
Дальше у остальных объектов исправляете номер колонки и строки, где они должны размещаться:
name_label.grid(row=2, column=0, sticky="w")
surname_label.grid(row=3, column=0, sticky="w")
...
name_entry.grid(row=2,column=1, padx=5, pady=3)
surname_entry.grid(row=3,column=1, padx=5, pady=3)
У кнопок также делаете отступы одинаковыми (padx=5) и прилипание к границам ячейки одновременно влево (west - запад) и вправо (east - восток), чтобы кнопки стали одинакового размера:
ok_button = Button(text="ОК", command=display_full_name)
ok_button.grid(row=0,column=2, padx=5, pady=3, sticky="we")
cancel_button = Button(text="Отмена", command=display_full_name)
cancel_button.grid(row=1,column=2, padx=5, pady=3, sticky="we")

