2010-07-09 19 views
6

Có thể đặt vị trí con trỏ trong tiện ích Văn bản Tkinter không? Tôi chưa tìm được thứ gì hữu ích.Đặt vị trí con trỏ trong tiện ích Văn bản

Điều tốt nhất tôi có thể làm là phát ra sự kiện <Button-1><ButtonRelease-1> ở tọa độ x-y nhất định, nhưng đó là số lượng pixel, không phải là số lượng chữ cái.

Trả lời

7

Nếu "văn bản", "dòng", "cột" là đối tượng văn bản, mong muốn dòng văn bản của bạn và biến cột mong muốn:

text.mark_set("insert", "%d.%d" % (line + 1, column + 1) 

Nếu bạn không muốn quan tâm đến số dòng ... tốt, bạn phải.

Toàn bộ tài liệu hướng dẫn tại địa chỉ: http://effbot.org/tkinterbook/text.htm

+0

Perfect! Tôi nghĩ rằng nó có thể là một nơi nào đó dọc theo những dòng nhưng tôi không thể tìm ra nó. Có phương pháp liên quan nào để nhận vị trí con trỏ hiện tại không? –

+3

@Wayne Werner: phương pháp "chỉ mục" sẽ trả về chỉ mục của bất kỳ vị trí nào bao gồm con trỏ chèn: 'text.index (" insert ")' –

6

Để thiết lập vị trí con trỏ, bạn có thể sử dụng phương pháp text_widget.mark_set, với "insert" (hoặc Tkinter.INSERT cho một “hằng số”) đối số đầu tiên và, đối với đối số thứ hai, là một trong nhiều hình thức, hữu thể hữu ích nhất:

  • "%d,%d" % (line, column), nơi dòng là 1-based và cột được 0 dựa trên
  • "1.0+%d chars" % index, nơi chỉ số được 0 dựa trên chỉ như một chỉ số chuỗi/unicode trong Python

Để có được các chỉ số của một nhãn hiệu, bạn có thể sử dụng phương pháp text_widget.index:

text_widget.index(Tkinter.INSERT)