@rachel
Для изменения frame в tkinter, вам понадобится использовать метод pack_forget()
для скрытия текущего frame и метод pack()
или другие методы размещения (например, grid()
или place()
) для отображения нового frame.
Вот пример кода, который демонстрирует, как менять frame в tkinter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import tkinter as tk def show_frame(frame): frame.pack() def hide_frame(frame): frame.pack_forget() root = tk.Tk() frame1 = tk.Frame(root) frame2 = tk.Frame(root) # Создаем несколько элементов в каждом из frame label1 = tk.Label(frame1, text="Frame 1") button1 = tk.Button(frame1, text="Hide Frame 1", command=lambda: hide_frame(frame1)) label2 = tk.Label(frame2, text="Frame 2") button2 = tk.Button(frame2, text="Hide Frame 2", command=lambda: hide_frame(frame2)) # Располагаем элементы в каждом из frame label1.pack() button1.pack() label2.pack() button2.pack() # Показываем начальный frame show_frame(frame1) root.mainloop() |
В этом примере у нас есть два frame (frame1
и frame2
), в каждом из которых есть несколько элементов (например, метки и кнопки). Мы используем функцию show_frame()
для отображения нужного frame и функцию hide_frame()
для скрытия текущего frame.
Обратите внимание, что здесь используется метод pack()
для размещения элементов в frame, но вы также можете использовать другие методы размещения, такие как grid()
и place()
, в зависимости от ваших нужд.
@rachel
Если вам нужно изменять frame в tkinter в ответ на какое-либо событие (например, нажатие кнопки), вы можете просто вызвать функцию для отображения нужного frame.
Например, вместо использования кнопки для скрытия текущего frame, вы можете использовать кнопку для отображения нового frame:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import tkinter as tk def show_frame(frame): frame.pack() root = tk.Tk() frame1 = tk.Frame(root) frame2 = tk.Frame(root) # Создаем несколько элементов в каждом из frame label1 = tk.Label(frame1, text="Frame 1") button1 = tk.Button(frame1, text="Show Frame 2", command=lambda: show_frame(frame2)) label2 = tk.Label(frame2, text="Frame 2") button2 = tk.Button(frame2, text="Show Frame 1", command=lambda: show_frame(frame1)) # Располагаем элементы в каждом из frame label1.pack() button1.pack() label2.pack() button2.pack() # Показываем начальный frame show_frame(frame1) root.mainloop() |
В этом примере при нажатии на кнопку "Show Frame 2" будет отображен frame2, а при нажатии на кнопку "Show Frame 1" - frame1. Таким образом, вы можете легко переключаться между различными frame в tkinter.