Как урезать полосу прокрутки в Tkinter?
В приложении 3 области для печати пользователем текста. Они заключены во фреймы, где 4 объекта: 1) ярлык, 2) текстовое поле, 3) полоса прокрутки, 4) 2 кнопки под текстовым полем.
В первой из трех областей удалось сделать правильно: там полоса прокрутки (выполнена через вложенный фрейм) не заходит на заголовок. Однако попытки повторить положительный опыт не дают того же эффекта: хотя сам движок располагается ровно по высоте поля текста, в то же время белая область над ним "вторгается" в поле ярлыка.
Как исправить? Привожу проблемный код
import tkinter as tk
window = tk.Tk()
# создадим рамку, где будет поле для вопросов пользователя
frame_question_answer = tk.Frame(
master=window,
relief=tk.RIDGE,
borderwidth=5
)
# добавим фрейм для полосы прокрутки
frame_question_answer_with_scroll = tk.Frame(
master=frame_question_answer
)
# создадим виджет ярлыка, предваряющего задаваемый вопрос
lbl_ask_question = tk.Label(
master=frame_question_answer,
text='Задай мне свой вопрос',
foreground='black', # устанавливает белый текст
background='MediumPurple1', # устанавливает фон оттенка сиреневого
width=32, # устанавливает ширину ярлыка
height=3 # устанавливает высоту ярлыка
)
# добавим виджет Text - данная область предназначена для написания вопросов
text_box_question = tk.Text(
master=frame_question_answer_with_scroll,
width=67,
height=5,
bg='#EBF1F2',
fg='black'
)
# создадим элемент кнопки Спросить
button_ask = tk.Button(
master=frame_question_answer,
text='Спросить',
width=15,
height=2,
bg='#B533FF',
fg='yellow',
activebackground='#C4B1C3'
)
# создадим элемент кнопки Очистить
button_clear = tk.Button(
master=frame_question_answer,
text='Очистить',
width=15,
height=2,
bg='#B533FF',
fg='yellow',
activebackground='#C4B1C3'
)
# разместим виджеты в сетке
frame_question_answer.grid(
row=0, column=0,
columnspan=1,
sticky='e'
)
frame_question_answer_with_scroll.grid(
row=1, column=0,
columnspan=2,
sticky='news'
)
lbl_ask_question.grid(
row=0, column=0,
columnspan=2,
sticky='news'
)
text_box_question.grid(
row=0, column=0, # columnspan=2,
sticky='news'
)
button_ask.grid(
row=3, column=0, sticky='ew'
)
button_clear.grid(
row=3, column=1, sticky='ew'
)
# создаем виджет скролинга текстовой области
# лента прокрутки для текстового поля вопросов
scrollbar_question = tk.Scrollbar(frame_question_answer,
orient='vertical',
command=text_box_question.yview
)
scrollbar_question.grid(row=1, column=3, sticky='ns')
text_box_question.configure(yscrollcommand=scrollbar_question.set)
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Что-то я вообще не вижу scrollbar'а в вашем примере кода...
Но если его туда добавить вот так:
scrollbar_question = tk.Scrollbar(master=frame_question_answer_with_scroll,
orient='vertical',
command=text_box_question.yview
)
scrollbar_question.grid(
row=0, column=1,
sticky='ns'
)
text_box_question.configure(yscrollcommand=scrollbar_question.set)

