Проблема при создании приложения *Книги*

Хочу создать приложение книжку. В самом начале столкнулся с трудностью. Когда записываю текст в текстовое поле и когда он доходит до нижней границы, если я пытаюсь написать его дальше, то программа создает новые строки и прокручивает окно вниз. Я хочу чтоб при достижения конца текстового поля, новый текст просто не писался. Просил много помощи у ChatGPT, единственный дельный совет, который получил - попробовать на другом фреймворке, однако хотелось бы посмотреть есть ли решение на Tkinter. Есть нормальный способ ограничить количество строк в текстовом поле, чтоб новые строки не создавались? Я пробовал через обработку нажатий следить за вводом пользователя, но это совсем не помогло

import tkinter as tk

root = tk.Tk()
root.title("Book")
root.geometry("900x500")
root.resizable(False, False) 

main_frame = tk.Frame(root)
main_frame.pack(padx=30, pady=5, fill="both", expand=True)

left_page = tk.Text(main_frame, wrap="word", width=55, height=30)
right_page = tk.Text(main_frame, wrap="word", width=55, height=30)

# Разделительная линия между страницами
canvas = tk.Canvas(main_frame, width=5, height=400)
canvas.create_line(0, 0, 0, 400, fill="black")

left_page.grid(row=0, column=0, sticky="nsew")
canvas.grid(row=0, column=1, sticky="ns") 
right_page.grid(row=0, column=2, sticky="nsew")

main_frame.grid_columnconfigure(0, weight=1)
main_frame.grid_columnconfigure(1, weight=0)  
main_frame.grid_columnconfigure(2, weight=1)

root.mainloop()

Ответы (1 шт):

Автор решения: Fox Fox

Набросано в качеств примера на скорую руку. В качестве ИДЕИ! Если попытаетесь ввести в поле больше 10 строк, ввода не будет.

import tkinter as tk

def limit_insert(event):
    max_lines = 10  # Максимальное количество строк
    current_lines = int(text.index('end-1c').split('.')[0])
    
    if current_lines >= max_lines and event.keysym == "Return":
        return "break"  # Прерываем вставку новой строки

root = tk.Tk()
root.geometry("600x400")  # Устанавливаем размеры окна

text = tk.Text(root, wrap='word')
text.pack(expand=True, fill='both')

# Привязываем событие вставки текста к функции limit_insert
text.bind('<KeyPress>', limit_insert)

root.mainloop()
→ Ссылка