2009-04-16 62 views
14
from Tkinter import * 


master = Tk() 

listbox = Listbox(master) 
listbox.pack() 
listbox.insert(END, "a list entry") 

for item in ["one", "two", "three", "four"]: 
    listbox.insert(END, item) 

listbox2 = Listbox(master) 
listbox2.pack() 
listbox2.insert(END, "a list entry") 

for item in ["one", "two", "three", "four"]: 
    listbox2.insert(END, item) 

master.mainloop() 

Đoạn mã trên tạo ra một cửa sổ tkinter với hai hộp danh sách. Nhưng có một vấn đề nếu bạn muốn lấy các giá trị từ cả hai bởi vì, ngay sau khi bạn chọn một giá trị trong một, nó sẽ bỏ chọn bất cứ giá trị nào bạn đã chọn trong giá trị còn lại.Cách chọn cùng một lúc từ hai Listbox?

Đây có phải chỉ là một nhà phát triển hạn chế phải sống cùng không?

Trả lời

23

Trả lời ngắn: đặt giá trị của thuộc tính exportselection của tất cả tiện ích hộp danh sách thành Sai hoặc không.

Từ a pythonware overview của widget listbox:

Theo mặc định, việc lựa chọn được xuất khẩu cơ chế X lựa chọn. Nếu bạn có nhiều hơn một hộp danh sách trên màn hình , điều này thực sự gây rối lên cho người dùng kém. Nếu anh ta chọn thứ gì đó trong một hộp danh sách và sau đó chọn chọn thứ gì đó khác, thì lựa chọn gốc sẽ bị xóa. Đó là thường là một ý tưởng hay để tắt cơ chế này trong những trường hợp như vậy. Trong ví dụ sau, ba listboxes được sử dụng trong hộp thoại tương tự:

b1 = Listbox(exportselection=0) 
for item in families: 
    b1.insert(END, item) 

b2 = Listbox(exportselection=0) 
for item in fonts: 
    b2.insert(END, item) 

b3 = Listbox(exportselection=0) 
for item in styles: 
    b3.insert(END, item) 

Các tài liệu dứt khoát cho các widget tk được dựa trên ngôn ngữ Tcl chứ không phải trăn, nhưng nó rất dễ dàng để dịch để python. Bạn có thể tìm thấy thuộc tính exportselection trên standard options manual page.

4

exportselection=0 khi xác định hộp danh sách có vẻ như quan tâm đến vấn đề này.

Các vấn đề liên quan