1

Тема: координати insert tkinter text

def experiment_text():
    text_window.insert(5.4, "x")

experiment = Button(text="experiment", height=3, width=15, command=experiment_text)
experiment.place(y=515, x=20)

Мало б вставляти текст в 5-ту строку і 4-й стовпець, але вставляє на місце 1.0

2

Re: координати insert tkinter text

Будь ласка, наведіть весь код, який дозволяє відтворити проблему.
І там точно має бути п'ять цілих дві п'ятих?

3

Re: координати insert tkinter text

from tkinter import *
import file_work
import time


def clear_text():
    text_window.delete(1.0, END)

def get_text():
    return text_window.get(1.0, END)

def read_text():
    clear_text()
    text_window.insert(1.0, file_work.read())

def search_text():
    inp = text_window.get(1.0, END).strip()
    info = file_work.search(inp)
    clear_text()
    text_window.insert(1.0, info)

def add_text():
    inp = text_window.get(1.0, END).strip()
    file_work.add(inp)
    read_text()

def remove_text():
    text_window.insert(1.0, "Які дані ви бажаєте видалити?\n")
    while text_window.get(3.0, END) == FALSE:
        time.sleep(1)
    inp = text_window.get(2.0, 3.0)
    print(inp)

def experiment_text():
    text_window.insert(5.4, "x")


root = Tk()
root.title("manager")
root.geometry('800x600')
root.config(background='grey')

text_window = Text(root, font=("Courier New", 12, 'bold'), width=55, height=29, bd=5, bg='powder blue')
text_window.place(y=15, x=200)

read = Button(text="Read", height=3, width=15, command=read_text)
read.place(y=15, x=20)

clear = Button(text="Clear Window", height=3, width=15, command=clear_text)
clear.place(y=115, x=20)

search = Button(text="Search", height=3, width=15, command=search_text)
search.place(y=215, x=20)

add = Button(text="Add", height=3, width=15, command=add_text)
add.place(y=315, x=20)

remove = Button(text="Remove", height=3, width=15, command=remove_text)
remove.place(y=415, x=20)

experiment = Button(text="experiment", height=3, width=15, command=experiment_text)
experiment.place(y=515, x=20)

label = Label()
label.pack()

root.mainloop()

Спочатку експерементував з read, але вирішив, щоб нічого не поламати ввести experiment.

koala написав:

І там точно має бути п'ять цілих дві п'ятих?

Я брав рандомне значення відмінне в 1.0
Проблема в тому, що не знаю як реалізувати видалення.

def remove_text():
    text_window.insert(1.0, "Які дані ви бажаєте видалити?\n")
    while text_window.get(3.0, END) == FALSE:
        time.sleep(1)
    inp = text_window.get(2.0, 3.0)
    print(inp)                          # поки що просто перевірка

Задумка була в тому, щоб користувач ввів значення натиснув Enter і тоді функція спрацювала (поки що просто б вивела в консоль значення)
Але тут виникла проблема з координатами.

4

Re: координати insert tkinter text

Гм. Я з tkinter ніколи нормально не працював; але ваш код реально виводить 'x' в 4-й символ (з нуля) 5-го рядка (з 1).
Ага, почитав https://tkdocs.com/tutorial/text.html - там цілий інтерпретатор є, і 5.4 переробляється в "5.4" (стрічку), яка потім розбирається на частини.
Останній введений рядок (після ENTER, але до введення чогось іще) читається так:

x=text_window.get("end-1l","end").strip()

end - це позначка кінця, -1l - на 1 рядок(line) вище. Другий "end" каже брати не один символ, а до кінця.
Після натискання ENTER доведеться брати на один рядок вище:

x=text_window.get("end-2l","end-1l").strip()

А можна брати увесь вміст

x=text_window.get('1.0', 'end')

і потім ділити його splitlines-ом та аналізувати, де там пусті рядки, а де щось є.

Подякували: Eff1c1