#python-3.x #tkinter
#python-3.x #tkinter
Вопрос:
Я хочу, чтобы между виджетом ввода и виджетом ScrollText был пробел. Я думал, что это будет так же просто, как установить row = 2 для сетки. Странно то, что независимо от того, что я установил для строки, виджет ScrollText всегда начинается со строки 1. Я полагаю, я мог бы добавить пустой текстовый виджет, чтобы освободить место, но я не понимаю, почему настройка строки у меня не работает.
from tkinter import *
from tkinter import scrolledtext
main = Tk()
main.title("Grid Prob")
main.geometry('750x750')
text = StringVar()
entSearch = Entry(main, textvariable = text, width = 50, font='arial 12',
highlightthickness=1)
entSearch.grid(row = 0, column = 1)
txt = """This is some text to be entered into the text widget. It should
word wrap when the text exceeds the width of the widget."""
textw = scrolledtext.ScrolledText(main,width=70,height=33)
# No matter what number I put for row the scroll widget always starts in
# row 1
textw.grid(column=1, row=3)
textw.config(background="light grey", foreground="black",
font='arial 12', wrap='word')
textw.insert(END, txt)
main.mainloop()
Комментарии:
1. высота пустых строк равна нулю.
2. Я не совсем понимаю, о чем вы говорите. Не могли бы вы объяснить это немного подробнее?
3. После создания еще нескольких тестовых примеров я думаю, что понимаю, о чем вы сейчас говорите. Смотрите мое решение ниже.
Ответ №1:
Если я правильно интерпретировал то, что Брайан Оукли сказал в комментариях выше, проблема в том, что, поскольку мой код ничего не помещал в строку 2, по умолчанию она (строка 2) имеет высоту 0. Это означает, что я помещаю свой виджет ScrollText в строку 3, как и предполагалось, но поскольку строка 2 имеет высоту 0, визуально это выглядит так, как будто он помещается в строку 2. Я добавил в свой код пустую метку высотой в единицу и поместил ее в строку 2. Это обеспечило пространство, которое я искал. Вот дополнительный код, который я добавил.
label_1 = Label(main, width = "70", height = "1")
label_1.grid(row=1, columnspan=3)
Кажется странным, что tkinter заставляет вас добавлять виджеты только для того, чтобы предоставить пробел. Если кто-нибудь знает лучший способ сделать это, пожалуйста, дайте мне знать.
Комментарии:
1. Вы можете использовать
grid_rowconfigure
метод, чтобы установить минимальный размер пустой строки.