我一直收到这个错误,我似乎无法修复它,如果有人能帮助我,我会非常感激。我现在已经看了很长一段时间了,我似乎无法理解它,我仍然很擅长以面向对象的方式进行编程。
谢谢&圣诞快乐
欢迎页面
from External_Menu import *
from tkinter import *
class Welcome(Frame):
def __init__(self, root):
Frame.__init__(self, root)
self.welcome_button()
self.pack()
def welcome_button(self):
self.welcome = Button(self, text="Welcome!", command=ExternalMenu.menu)
self.welcome.pack()
self.pack()
if __name__ == "__main__":
root = Tk()
main = Welcome(root)
main.mainloop()
外部菜单
from tkinter import *
class ExternalMenu(Frame):
def __init__(self, root):
Frame.__init__(self, root)
self.menu()
self.pack()
def menu(self):
self.external_menu_lbl = Label(self, text="External Menu", font=("", 26))
self.external_menu_lbl.pack()
self.sign_in_button = Button(self, text="Sign In")
self.sign_in_button.pack()
self.sign_up_button = Button(self, text="Sign Up")
self.sign_up_button.pack()
self.pack()
答案 0 :(得分:0)
您的menu
是一个方法,因此它需要一个可以操作的对象才能工作。但是你试图在没有为它创建的对象的情况下调用它,基本上你就像一个函数一样调用它。首先,您需要创建定义方法的类的对象:
an_ex_men = ExternalMenu(root)
然后您就可以在menu
上调用an_ex_men
方法:
an_ex_men.menu()
但是,由于您已经在menu
的{{1}}方法下调用ExternalMenu
,因此只要创建该类的对象实例,就会调用它。很快,您创建一个__int__
对象就足以实现它,即使没有将它放到变量中以便稍后引用:
ExternalMenu
由于您要在两个窗口之间切换,因此您需要一个额外的方法来隐藏或完全销毁另一个窗口。假设您要销毁另一个窗口,为此您可以使用为您的按钮定义的方法来执行这两个操作:
ExternalMenu(root)
如:
def welcome(self):
self.destroy()
ExternalMenu(root)
下面的示例完全符合您的预期,首先我创建了一个父类...
def welcome_button(self):
self.welcome = Button(self, text="Welcome!", command=self.welcome)
self.welcome.pack()
def welcome(self):
self.destroy()
ExternalMenu(root)
...
,因为根据您的情况,您拥有的两个框架处于同一层次结构中,并且拥有父框架在我看来更好的结构:
App