Я пытаюсь выполнить навигацию в tkinter
, используя functions
, так как я не в курсе class programming
, но получаю эту ошибку AttributeError: 'Label' object has no attribute
'show'. Я хочу сделать это, чтобы у меня были разные виджеты во всех трех фреймах.
Мне нужна ваша помощь, чтобы поднять фрейм, чтобы появился следующий, а также вернуться назад.
import tkinter as tk
def show():
global show
gr = tk.Frame(root)
gr.lift()
def next_page():
global show
# move the first page to the end of the list,
# then show the first page in the list
page = pages.pop(0)
pages.append(page)
pages[0].show()
def prev_page():
global show
# move the last page in the list to the front of the list,
# then show the first page in the list.
page = pages.pop(-1)
pages.insert(0, page)
pages[0].show()
root = tk.Tk()
root.wm_geometry("400x400")
Page = tk.Label(root, text="page number")
Page.pack()
buttonframe = tk.Frame(root)
container = tk.Frame(root)
buttonframe.pack(side="top", fill="x", expand=False)
container.pack(side="top", fill="both", expand=True, padx=2, pady=2)
next_button = tk.Button(buttonframe, text="Next", command=next_page) # self.next_page
prev_button = tk.Button(buttonframe, text="Previous", command=prev_page) # prev_page
prev_button.pack(side="left")
next_button.pack(side="left")
pages = []
for i in range(3):
page = tk.Label(text="page %d" % i)
page.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
pages.append(page)
#pages[0].show()
root.mainloop()
РЕДАКТИРОВАТЬ
Это моя next_page
функция, но пока она не работает, я использовал place_forget
def next_page():
i = var.get()
if i < 2 :
pages[i].place_forget()
var.set(i + 1)
pages[i+1].place(in_=container, x=0, y=0, relwidth=1, relheight=1)
if pages[i] == 0:
pages[i].place_forget()
tree = ttk.Treeview()
tree.pack()
elif pages[i] == 1:
pages[i].place_forget()
listbox = tk.Listbox()
listbox.pack()
elif pages[i] == 2:
pages[i].place_forget()
listbox = tk.Text()
listbox.pack()