尽管我知道人们以前曾问过这个问题,但我已经尝试了帖子中的方法,但没有成功。我试图单击一个按钮在2帧之间切换。到目前为止,这是我的代码:
from tkinter import *
window = Tk()
nframe = Frame(window,width = 100,height = 100)
nframe.pack()
conjframe = Frame(window,width = 100,height = 100)
transframe = Frame(window,width = 100,height = 100)
window.geometry("100x100")
def raisenframe():
nframe.tkraise()
def raiseconjframe():
conjframe.tkraise()
def raisetransframe():
transframe.tkraise()
def conj():
print("this is a conjugator")
conjframe.tkraise()
def trans():
print("this is a translator")
transframe.tkraise()
transframe.pack()
Label(conjframe,text = 'hola').pack()
conjugator = Button(nframe, text="Conjugator", command=lambda:raiseconjframe)
conjugator.pack()
translator = Button(nframe, text="Translator", command=lambda:raisetransframe)
translator.pack()
raisenframe()
window.mainloop()
问题是,当我单击按钮时,尽管我认为我已正确完成所有操作,但似乎并没有切换到其他任何框架。有人可以帮我吗?
答案 0 :(得分:0)
获得具有堆叠框架的布局的本质是使框架彼此重叠。您可以通过在相同位置将框架网格化来实现。 要观察提升操作,您需要在每个帧中放置一个小部件。
这是一个简单的示例,其中控制按钮包装在ROOT框架中,两个 堆叠的框架及其内容在一个单独的框架中相互网格排列。
import tkinter as tk
ROOT = tk.Tk()
# seperate frame to hold frames stacked on top of each other
stacking_frame = tk.Frame()
stacking_frame.pack()
# two stacked frames within the stacking frame
conj_frame = tk.Frame(master=stacking_frame)
conj_frame.grid(column=0, row=0)
trans_frame = tk.Frame(master=stacking_frame)
trans_frame.grid(column=0, row=0)
# example contents in each stacked frame
tk.Label(master=conj_frame,
text='Conj').grid()
tk.Label(master=trans_frame,
text='Trans').grid()
# buttons commands to alter stacking order
tk.Button(text="Raise Conjugator", command=conj_frame.tkraise).pack()
tk.Button(text="Raise Translator", command=trans_frame.tkraise).pack()
ROOT.mainloop()
有关tkinter的有用的入门信息,可以在这里https://tkdocs.com/tutorial/index.html
可以在此处找到帧切换和相关信息的详细示例 Switch between two frames in tkinter