Python - 类函数不会运行__init__

时间:2016-08-02 22:08:57

标签: python-3.x

我是python 3.5的新手,并想知道是否有人可以指出我正确的方向。我有一个简单的GUI,并希望将一些数据加载到程序中,但似乎无法使该类工作,所以我显然忘了一些东西。你们能帮忙吗?下面是我的GUI代码。

from tkinter import *

def load_dat():
    import load_data
def doNothing(info=""):
    if info != "":
    print(info)
    status.config(text=info)
else:
    print("Ok I wont...")
    status.config(text="Ok I wont...")

root = Tk(className="Test GUI")

# ***** Main Menu *****

menu = Menu(root)
root.config(menu=menu)

subMenu = Menu(menu)
menu.add_cascade(label="Load/Save", menu=subMenu)

loadSubmenu = Menu(menu)
loadSubmenu.add_command(label="Load Data")
subMenu.add_cascade(label='Load', command=load_dat)
subMenu.add_command(label="Save", command=doNothing)

# ***** Main Area *****

main_window = Frame(root, width=200, height=100)
main_window.pack()

# ***** Status Bar *****

status = Label(root, text="Preparing to do nothing", bd=1, relief=SUNKEN, anchor=W)
status.pack(side=BOTTOM, fill=X)

root.mainloop()

我班级的代码(Called load_data)是:

class load_data:
print("0")
def __init__(self):
    print("1")

当我点击“加载数据”按钮时,我可以让程序输出打印“0”消息,但它不会输出打印(“1”)消息。我忘记了什么?感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

就像user2357112已经说过的那样,你永远不会创建load_data类的实例。在实例化类时调用类的__init__()函数。您应该像这样更改代码:

# fixed indentation
class load_data:
    print("0")
    def __init__(self):
        print("1")

from tkinter import *
import load_data  # import always at the start of a script

def load_dat():
    data = load_data()  # create an instance "data" of class "load_data"
def doNothing(info=""):
    if info != "":
    print(info)
    status.config(text=info)
else:
    print("Ok I wont...")
    status.config(text="Ok I wont...")