Làm cách nào để ngăn chặn khả năng người dùng cuối chỉnh sửa/thêm/xóa văn bản trong một tiện ích Văn bản? (Python v3.2 .. và tkinter)Chỉ đọc Tiện ích văn bản trong python3-tkinter; nền tảng chéo
Điểm là chỉ ngăn chặn khả năng thay đổi/thêm/xóa văn bản nhưng không được đúc các tính năng khác. Có lẽ một văn bản NoEdit được mở rộng sẽ là một tên tốt hơn.
Tôi đã thử .text [ 'nhà nước'] = 'disabled' và nó hoạt động gần OK trong Windows (nó vẫn cho phép người dùng lựa chọn/sao chép văn bản nhấn mạnh việc lựa chọn, trang lên/xuống và lên Các nút/xuống chỉ hoạt động. Điều duy nhất bị hỏng dường như là con trỏ được ẩn.)
Nhưng trên mọi thứ đều bị hỏng. Không nổi bật, không chọn/sao chép, ... Ugh
Kể từ Tkinter có thực tế không có tài liệu hướng dẫn bằng Python, tôi đã tìm kiếm và tìm thấy một số TCL tư vấn, để lấy được một lớp mới và ngăn chặn các chèn và xóa chức năng.
Vì vậy, tôi đã cố gắng như vậy:
class roText(tk.Text):
def insert(self,*args,**kwargs):
print(" Hey - Im inside roText.insert")
pass
def delete(self,*args,**twargs):
pass
def pInsert(self,*args,**twargs):
super().insert(*args,**twargs)
Đáng tiếc là nó đã không làm việc đúng. Rõ ràng tkinter không sử dụng các chức năng chèn và xóa khi người dùng cuối nhập/xóa mã. Có lẽ những chèn/xóa TCL là cái gì khác, và tôi bị mất một cái gì đó trong bản dịch từ TCL và Swahili. Tkinter.Text sử dụng chức năng gì cho văn bản chỉnh sửa người dùng cuối? Hy vọng rằng họ không phải là nội bộ ...
Vì vậy, có cách nào sửa đổi tiện ích Văn bản để chỉ chặn chỉnh sửa người dùng cuối không? Có cách nào để làm điều đó mà không cần lặn bên trong và ghi đè mã Tkinter nội bộ, vì vậy công cụ không bị hỏng bởi các phiên bản tiếp theo của Tkinter?
Nhìn vào cửa sổ trình bao Idle, tôi thấy rằng họ đã quản lý để chặn các chỉnh sửa (ngoại trừ dòng cuối cùng). Vì vậy, có một cách. Nhưng nó là gì và tốn kém như thế nào?
OK, tôi đã có cơ hội thử nghiệm trên Mac và văn bản.focus_set() bị ràng buộc là <1> khắc phục được sự cố, giống như bạn đã nói. ** Cảm ơn !!! ** (Có lẽ trang này có thể được dọn dẹp cho những người khác đang tìm kiếm giải pháp. Và tôi đã thấy nhiều trên web). Thật không may là tôi sợ rằng nó dường như là một trong nhiều vấn đề với cổng Tkinter cho Mac. màu 'xanh' không hoạt động trên các nút, văn bản trên các nút cần thêm khoảng cách (văn bản này có thể liên quan đến độ phân giải), v.v ... Những thứ này dễ làm việc và tôi chỉ hy vọng sẽ không hiển thị – Momus