Python Tkinter установить текстовый виджет в нижней части окна, используя сетку - PullRequest
0 голосов
/ 12 апреля 2020

Я совершенно новичок в использовании tkinter и в настоящее время играюсь с сеткой. Я установил окно в 1000x500, и в левом верхнем углу у меня было изображение, похожее на это ...

window = Tk()
window.geometry("1000x500") #Width x Height

logo = PhotoImage(file="logo.gif")
Label (window, image=logo, bg="#f0f0f0") .grid(row=0, column=0)

T = Text(window, height=2, width=30)
T.insert(END, "Just a text Widget\nin two lines\n")
T.grid(row=2, column=0)

Я бы хотел, чтобы текстовый виджет располагался внизу окна, я попытался установить строка к чему-то большему, но это не имеет никакого эффекта.

Где я иду не так?

1 Ответ

1 голос
/ 12 апреля 2020

Очевидно, самый простой способ - использовать .pack() вместо .grid(). Но если вы действительно хотите использовать .grid(). Вам нужно установить rowconfigure(), чтобы установить вес строки, и sticky="s" или sticky=S, чтобы сделать это внизу.

Ваш код может быть:

from tkinter import *

window = Tk()
# window.geometry("1000x500") #Width x Height

logo = PhotoImage(file="xxx")
Label (window, image=logo, bg="#f0f0f0") .grid(row=0, column=0)

T = Text(window, height=2, width=30)
T.insert(END, "Just a text Widget\nin two lines\n")
T.grid(row=1, column=0, sticky=S)

window.grid_rowconfigure(1,weight=1)

window.mainloop()

Помните, если вы хотите всегда делать это внизу и использовать только .gird(), вам нужно установить вес строки текста. Поэтому я предлагаю вам поместить все виджеты (кроме виджета «Текст» внизу) в Frame. И использовать .grid() в Frame. Frame и Text использовать .pack().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...