我是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”)消息。我忘记了什么?感谢您提供的任何帮助。
答案 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...")