【发布时间】:2018-06-07 01:51:50
【问题描述】:
我正在尝试制作一个简单的魔术八球应用程序,只是为了练习。我正在使用 tkinter 和 python 3.0。我正在尝试将帧切换到应用程序的下一部分,但无法绕过它。我只是想知道这段代码有什么问题,因为每次我尝试更正它时,它都会出现错误“未定义容器”或“PageOne 没有属性 'tk'”。我想说到目前为止我对 tkinter 相当满意,并且可以制作只有一页的基本 GUI。但是,我似乎无法做到这一点。这是代码:
import tkinter as tk
class EightBall(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args,**kwargs)
container = tk.Frame(self)
container.configure(width=500, height=500)
container.pack()
self.frames={}
for F in (StartPage, PageOne):
frame = F(container,self)
self.frames[F]=frame
frame.configure(width=500,height=500)
frame.pack()
self.show_frame(StartPage)
def show_frame(self,controller):
frame=self.frames[container]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
HomeButton=tk.Button(self, text="Press to play",
command=lambda: controller.show_frame(PageOne))
HomeLabel=tk.Label(self, text="Magic 8 Ball", fg="white",bg="blue")
HomeLabel.configure(font="Arial 22")
HomeButton.place(relx=0.5,rely=0.5,anchor="center")
HomeLabel.place(relx=0.35,y=10)
class PageOne(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self,parent)
PageOneLabel=tk.Label(PageOne,text="What is your name?")
PageOneEntry=Entry(PageOne)
PageOneButton=tk.Button(PageOne, text="Enter",
command=lambda: controller.show_frame(PageTwo))
PageOneLabel.place(relx=0.50,rely=0.45)
PageOneEntry.place(relx=0.50,rely=0.50)
PageOneButton.place(relx=0.50,rely=0.55)
app=EightBall()
app.mainloop()
我做错了什么?
【问题讨论】:
-
我相当有信心@ReblochonMasque 链接的问题是您获得大部分代码的地方。然而,问题是您所做的更改会破坏代码示例的工作。你确定你完全理解你开始使用的代码吗?如果没有,你真的应该尝试,否则你会遇到更多的困难。