Một lựa chọn, như được giải thích trong câu trả lời khác, là sử dụng pack_forget
hoặc grid_forget
. Một tùy chọn khác là sử dụng lift
và lower
. Điều này thay đổi thứ tự xếp chồng của các widget. Hiệu ứng ròng là bạn có thể ẩn các vật dụng đằng sau các tiện ích anh chị em (hoặc hậu duệ của anh chị em ruột). Khi bạn muốn chúng hiển thị, bạn lift
chúng và khi bạn muốn chúng ẩn mặt bạn, hãy lower
chúng.
Lợi thế (hoặc bất lợi ...) là chúng vẫn chiếm không gian trong chủ của chúng. Nếu bạn "quên" một tiện ích, các tiện ích con khác có thể điều chỉnh kích thước hoặc hướng của chúng, nhưng nếu bạn tăng hoặc giảm chúng thì chúng sẽ không.
Dưới đây là một ví dụ đơn giản:
import Tkinter as tk
class SampleApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
self.frame = tk.Frame(self)
self.frame.pack(side="top", fill="both", expand=True)
self.label = tk.Label(self, text="Hello, world")
button1 = tk.Button(self, text="Click to hide label",
command=self.hide_label)
button2 = tk.Button(self, text="Click to show label",
command=self.show_label)
self.label.pack(in_=self.frame)
button1.pack(in_=self.frame)
button2.pack(in_=self.frame)
def show_label(self, event=None):
self.label.lift(self.frame)
def hide_label(self, event=None):
self.label.lower(self.frame)
if __name__ == "__main__":
app = SampleApp()
app.mainloop()
Nguồn
2011-05-08 15:15:35
Câu hỏi đặt ra, đó có phải là hành vi thích hợp không? – pyfunc
@pyfunc Câu hỏi đặt ra trong chủ đề (dù có hay không ở đó nhưng không ở trong nội dung thư). – Shule