【发布时间】:2021-05-07 18:11:17
【问题描述】:
我已经从较早的问题中改编了这段代码,该问题巧妙地保留了导航框架,但根据按下的按钮更改了内容框架。登录页面有一个条目小部件。我想将它的值(例如“Paul”说)转移到 Play Game 框架,所以它说“这是游戏页面 Paul”。如果有人可以提供帮助,我不知道如何使用这种特殊设置。
import tkinter as tk
class Page(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
def show(self):
self.lift()
class Page1(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="This is the log in page ")
username=tk.Entry(self)
label.pack(side="top", pady=30, fill="both")
username.pack()
class Page2(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="This is the register page")
label.pack(side="top", pady=30,fill="both")
class Page3(Page):
def __init__(self, *args, **kwargs):
Page.__init__(self, *args, **kwargs)
label = tk.Label(self, text="This is the game page ") #+user
label.pack(side="top",pady=30, fill="both")
class MainView(tk.Frame):
def __init__(self, *args, **kwargs):
tk.Frame.__init__(self, *args, **kwargs)
p1 = Page1(self)
p2 = Page2(self)
p3 = Page3(self)
buttonframe = tk.Frame(self)
container = tk.Frame(self)
buttonframe.pack(side="left", fill="x", expand=False)
buttonframe.configure(bg="red")
container.pack(side="top", fill="both", expand=True)
p1.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p2.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
p3.place(in_=container, x=0, y=0, relwidth=1, relheight=1)
b1 = tk.Button(buttonframe, text="Log In", width=8, command=p1.lift)
b2 = tk.Button(buttonframe, text="Register",width=8, command=p2.lift)
b3 = tk.Button(buttonframe, text="Play Game",width=8, command=p3.lift)
b1.pack(padx=10,pady=10)
b2.pack(padx=10,pady =10)
b3.pack(padx=10,pady=10)
p1.show()
if __name__ == "__main__":
root = tk.Tk()
main = MainView(root)
main.pack(side="top", fill="both", expand=True)
root.wm_geometry("400x400")
root.mainloop()
【问题讨论】:
-
您需要保留对
tk.Entry和所有Page对象的引用。而不是username=tk.Entry(self)使用self.username = tk.Entry(self)。这样您以后可以使用self.username访问它,并且您可以使用self.username.get()获取tk.Entry的内容。