2013-04-03 38 views
19

Tôi đang cố gắng xóa một khung trong tkinter để các nội dung mới có thể được ghi (thông tin làm mới) nhưng tôi không thể quản lý để làm điều đó. Tôi biết những điều nàyPython Tkinter xóa một khung

frame.destroy() 
frame.pack_forget() 
frame.grid_forget() 

nhưng frame.destroy() sẽ loại bỏ hoàn toàn khung. Và hai người kia cũng không thể cho tôi kết quả tôi muốn. Những gì tôi cần chỉ là để xóa tất cả các mục trong khung nhưng khung chính nó sẽ ở lại. Có cách nào để làm điều đó?

+2

tùy thuộc vào tác vụ bạn có thể tạo khung trong khung và tiêu diệt – User

Trả lời

15

pack_forgetgrid_forget sẽ chỉ xóa tiện ích con khỏi chế độ xem, nó không tiêu diệt chúng. Nếu bạn không có kế hoạch tái sử dụng các vật dụng, lựa chọn duy nhất thực sự của bạn là để tiêu diệt chúng với phương pháp destroy.

Để thực hiện điều đó, bạn có hai lựa chọn: tiêu diệt từng cá nhân, hoặc phá hủy khung khiến tất cả các con của nó bị hủy. Cái sau nói chung là dễ nhất và hiệu quả nhất.

Vì bạn yêu cầu bạn không muốn phá hủy khung chứa, hãy tạo khung phụ. Có khung phụ này là vùng chứa cho tất cả các tiện ích bạn muốn xóa và sau đó đặt một khung này bên trong bố mẹ bạn không muốn hủy. Sau đó, nó chỉ là một vấn đề phá hủy một khung này và tất cả các vật dụng nội thất sẽ bị phá hủy cùng với nó.

+0

Tôi đã giải quyết được vấn đề của mình bằng cách tạo một chức năng sẽ tạo lại khung tôi muốn xóa mỗi lần tôi muốn cập nhật. cho sự giúp đỡ của bạn Bryan, câu trả lời của bạn là thông tin. –

+0

@ Chris Aung: Bạn có muốn chia sẻ chức năng đó không? Tôi đang tìm kiếm điều đó, bởi vì bản thân tôi thất bại vì một lý do nào đó. – Zelphir

+0

Ở đây người ta có thể tìm thấy một phương pháp, hoạt động: http://stackoverflow.com/a/15995920/1829329 – Zelphir

25

http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/universal.html

w.winfo_children()
Trả về một danh sách các trẻ em tất cả của w, trong trật tự xếp chồng của họ từ thấp nhất (dưới) đến cao nhất (trên cùng).

for widget in frame.winfo_children(): 
    widget.destroy() 

Sẽ tiêu diệt tất cả tiện ích trong khung của bạn. Không cần khung thứ hai.

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