Проблема при создании приложения *Книги*
Хочу создать приложение книжку. В самом начале столкнулся с трудностью. Когда записываю текст в текстовое поле и когда он доходит до нижней границы, если я пытаюсь написать его дальше, то программа создает новые строки и прокручивает окно вниз. Я хочу чтоб при достижения конца текстового поля, новый текст просто не писался. Просил много помощи у 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 шт):
Набросано в качеств примера на скорую руку. В качестве ИДЕИ! Если попытаетесь ввести в поле больше 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()