Tôi có 2 Hộp danh sách được tách riêng được đặt ở chế độ chọn đơn. Khi tôi chọn một mục từ listboxA
, nó được đánh dấu, nhưng khi tôi chọn một mục từ listboxB
, nó được đánh dấu, và mục từ listboxA
vẫn hoạt động, nhưng không được đánh dấu. Làm thế nào tôi có thể giữ cho cả hai được đánh dấu?Làm cách nào để giữ các lựa chọn được tô sáng trong Hộp danh sách tkinter?
Trả lời
Câu trả lời ngắn: thiết lập các thuộc tính của mỗi exportselection
ListBox để False
Tkinter có nguồn gốc từ hệ thống X cửa sổ. X có một khái niệm gọi là "lựa chọn", tương tự như clipboard hệ thống (chính xác hơn, khay nhớ tạm là lựa chọn "CHÍNH"). Theo mặc định, một số tiện ích tkinter xuất lựa chọn của họ thành lựa chọn CHÍNH. Một ứng dụng chỉ có thể có một lựa chọn PRIMARY tại một thời điểm, đó là lý do tại sao phần đánh dấu biến mất khi bạn nhấp vào giữa hai hộp danh sách.
Tkinter cho phép bạn kiểm soát hành vi này bằng tùy chọn cấu hình exportselection
cho hộp danh sách (và tiện ích văn bản và mục nhập). Đặt nó thành False
ngăn việc xuất vùng chọn sang lựa chọn X, cho phép tiện ích giữ nguyên lựa chọn của nó khi một tiện ích con khác được lấy tiêu điểm.
Ví dụ:
the_listbox = tk.Listbox(..., exportselection=False)
Trích dẫn từ official tk documentation:
exportselection Chỉ định có hay không một sự lựa chọn trong các phụ tùng cũng nên là lựa chọn X. Các giá trị có thể có bất kỳ các hình thức chấp nhận bởi Tcl_GetBoolean, chẳng hạn như đúng, sai, 0, 1, có, hoặc không. Nếu lựa chọn được xuất, sau đó chọn trong tiện ích sẽ bỏ chọn lựa chọn X X hiện tại, chọn bên ngoài tiện ích sẽ bỏ chọn bất kỳ tiện ích nào là và widget sẽ trả lời yêu cầu truy xuất chọn khi có lựa chọn. Mặc định thường dành cho các tiện ích xuất để xuất các lựa chọn .