我正在尝试创建一个应用程序,其中在主框架内还有另外两个框架(左右)。
左框架由始终可见的按钮组成。这些按钮将更改右框架的内容。
我成功地做到了这一点,方法是将每个按钮分配给一个定义,该定义将在左侧框架中重新创建按钮,清除右侧框架中的内容,并重写右侧框架中的内容。
这可行,但是我想学习更多有关不同/更有效的方式的信息。
最近几天,我一直在搜索如何包括课程,这就是我所发现的。
function animate() {
requestAnimationFrame(animate);
TWEEN.update();
renderer.render(scene, camera);
}
animate();
此类有助于创建一个控制器,您可以在其中浏览框架。
我遇到的问题是创建一个始终可见的框架,因为class SeaofBTCapp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
frame = StartPage(container, self)
self.frames[StartPage] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
会更改整个窗口的内容。
我有一个想法,可以将这种结构添加到不是主窗口的名为“ RightFrame”的类中,但是我不知道如何使框架和按钮彼此通信。
我是编码的完整入门者,所以任何指针都将不胜感激。
答案 0 :(得分:0)
tkraise()
只是将其调用的窗口小部件移到最前面,这意味着它将仅更改窗口中被调用的窗口小部件所在的部分。
所有可以在其间更改的框架都位于container
中,因此升高这些框架中的任何一个仅会影响container
所在的窗口部分。因此,您可以在container
旁边放置另一个框架,该框架不会受到container
内部的任何框架变化的影响:
left_frame = tk.Frame(self)
left_frame.pack(side="left", fill="both", expand = True)
container = tk.Frame(self)
container.pack(side="left", fill="both", expand = True)
label = tk.Label(left_frame, text="This is the left frame", font=self.title_font)
label.pack(side="top", fill="x", pady=10)
或
left_frame = LeftFrame(self)
left_frame.pack(side="left", fill="both", expand = True)
container = tk.Frame(self)
container.pack(side="left", fill="both", expand = True)
class LeftFrame(tk.Frame):
def __init__(self, parent):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="This is the left frame", font=parent.title_font)
label.pack(side="top", fill="x", pady=10)