我有一个包含所有其他类的类(MainApplication),以及一个位于外部类之外的 if 语句。我正在努力弄清楚如何从该 if 语句访问“开始”,以便程序启动。
import tkinter as tk
class MainApplication(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
class charName (object):
def __init__ (self, master):
Top = self.Top = tk.Toplevel(master)
self.l= tk.Label(Top, text="Test")
self.l.pack()
self.e = tk.Entry(Top)
self.e.pack()
self.b = tk.Button(Top, text="Next", command=self.Cleanup,)
self.b.pack()
Top.mainloop
def Cleanup (self):
self.value = self.e.get()
self.command = print("Works!")
self.Top.destroy
class Start (object):
def __init__(self, master):
self.master=master
self.b = tk.Button(root,
text="Get Started!",
command=self.popup,)
self.b.pack()
def popup (self):
self.w = charName(self.master)
self.b["state"] = "disabled"
self.master(self.w.Top)
self.b["state"] = "normal"
if __name__ == "__main__":
root=tk.Tk()
m=Start(root)
root.mainloop()
我尝试摆脱 MainApplication,效果很好。 除此之外,我不确定我还能做什么。我从另一篇文章中读到,MainApplication 代码可以用于组织对象(我不太确定我在做什么),但我试图使这部分代码打开一个屏幕,允许您输入角色名称,然后(用不同的代码)选择种族、阶级和其他创建 DnD 角色所需的必需品,并使用代码来组织按钮的位置。
另外,抱歉这篇文章太长了。我是 python (和这个)的新手,不太确定我知道我在做什么,需要什么或不需要什么。感谢您的耐心等待。
import tkinter as tk
class charName (object):
def __init__ (self, master):
Top = self.Top = tk.Toplevel(master)
self.l= tk.Label(Top, text="Test")
self.l.pack()
self.e = tk.Entry(Top)
self.e.pack()
self.b = tk.Button(Top, text="Next", command=self.Cleanup,)
self.b.pack()
Top.mainloop
def Cleanup (self):
self.value = self.e.get()
self.command = print("Works!")
self.Top.destroy
class Start (object):
def __init__(self, master):
self.master=master
self.b = tk.Button(root,
text="Get Started!",
command=self.popup,)
self.b.pack()
def popup (self):
self.w = charName(self.master)
self.b["state"] = "disabled"
self.master(self.w.Top)
self.b["state"] = "normal"
if __name__ == "__main__":
root=tk.Tk()
m=Start(root)
root.mainloop()
如果要调用内部类的构造函数,必须先实例化外部类:
class Outer():
class Inner():
def __init__(self, num):
print(num)
outer = Outer()
outer.Inner(1) # prints 1