Python 自我没有定义?
我试图制作一个基本的学习时钟作为Tkinter的学习练习,但当我试图运行它时,我得到了一个错误,说自我没有定义。这是错误消息Python 自我没有定义?,python,python-2.7,tkinter,Python,Python 2.7,Tkinter,我试图制作一个基本的学习时钟作为Tkinter的学习练习,但当我试图运行它时,我得到了一个错误,说自我没有定义。这是错误消息 Traceback (most recent call last): File "productivityclock.py", line 6, in <module> class gui(object): File "productivityclock.py", line 113, in gui while 0
Traceback (most recent call last):
File "productivityclock.py", line 6, in <module>
class gui(object):
File "productivityclock.py", line 113, in gui
while 0 < self.z:
NameError: name 'self' is not defined
回溯(最近一次呼叫最后一次):
文件“productivityclock.py”,第6行,在
类gui(对象):
gui中第113行的文件“productivityclock.py”
当0
这是我的代码,如果有人能帮我,我将非常感激,谢谢
from Tkinter import *
import time
root = Tk()
class gui(object):
def __init__(self, master):
self.frame = Frame(master)
self.frame.pack()
t_int = 0
b_int = 0
reps = 0
self.menu()
def menu(self):
self.button1 = Button(
self.frame, text="Set Time", command = self.set_time)
self.button2 = Button(
self.frame, text="Set Breaks", command = self.set_break)
self.button3 = Button(
self.frame, text="Set Intervals", command = self.set_reps)
self.button4 = Button(
self.frame, text="Start", command = self.timer)
self.button1.pack(side = LEFT)
self.button2.pack(side = LEFT)
self.button3.pack(side = LEFT)
self.button4.pack(side = LEFT)
def set_time(self):
self.button1.pack_forget()
self.button2.pack_forget()
self.button3.pack_forget()
self.button4.pack_forget()
self.l = Label(self.frame, text = "Enter the time of each study session (minutes)")
self.button = Button(
self.frame, text="Get", command=self.on_button1)
self.entry = Entry(self.frame)
self.button.pack(side = RIGHT)
self.entry.pack(side = LEFT)
self.l.pack(side = LEFT)
def set_break(self):
self.button1.pack_forget()
self.button2.pack_forget()
self.button3.pack_forget()
self.button4.pack_forget()
self.l = Label(self.frame, text = "Enter the time of each break (minutes)")
self.button = Button(
self.frame, text="Get", command=self.on_button2)
self.entry = Entry(self.frame)
self.button.pack(side = RIGHT)
self.entry.pack(side = LEFT)
self.l.pack(side = LEFT)
def set_reps(self):
self.button1.pack_forget()
self.button2.pack_forget()
self.button3.pack_forget()
self.button4.pack_forget()
self.l = Label(self.frame, text = "Enter the amount of study sessions (minutes)")
self.button = Button(
self.frame, text="Get", command=self.on_button3)
self.entry = Entry(self.frame)
self.button.pack(side = RIGHT)
self.entry.pack(side = LEFT)
self.l.pack(side = LEFT)
def on_button1(self):
x = self.entry.get()
self.t_int = x
print self.t_int
self.button.pack_forget()
self.entry.pack_forget()
self.l.pack_forget()
self.menu()
def on_button2(self):
x = self.entry.get()
self.b_int = x
print self.b_int
self.button.pack_forget()
self.entry.pack_forget()
self.l.pack_forget()
self.menu()
def on_button3(self):
x = self.entry.get()
self.reps = x
print self.reps
self.button.pack_forget()
self.entry.pack_forget()
self.l.pack_forget()
self.menu()
def timer(self):
x = self.t_int
y = self.b_int
self.z = self.reps
while 0 < self.z:
while x > 0:
time.sleep(60)
n = Label(self.frame, text = "You have %r minutes left in your session") % x
n.pack(side = LEFT)
x = x - 1
n.pack_forget
while y > 0:
time.sleep(60)
self.e = Label(self.frame, text = "You have %r minutes left in your break") % y
self.e.pack(side = LEFT)
self.y = self.y - 1
self.e.pack_forget()
z = z - 1
x = self.t_int
y = self.b_int
app = gui(root)
root.mainloop()
从Tkinter导入*
导入时间
root=Tk()
类gui(对象):
定义初始(自我,主):
self.frame=帧(主)
self.frame.pack()
t_int=0
b_int=0
重复次数=0
self.menu()
def菜单(自我):
self.button1=按钮(
self.frame,text=“设置时间”,command=self.Set\u时间)
self.button2=按钮(
self.frame,text=“Set break”,command=self.Set\u break)
self.button3=按钮(
self.frame,text=“设置间隔”,command=self.Set\u reps)
self.button4=按钮(
self.frame,text=“Start”,command=self.timer)
自动按钮1.包装(侧面=左侧)
自动按钮2.包装(侧面=左侧)
自动按钮3.包装(侧面=左侧)
自动按钮4.包装(侧面=左侧)
def设置时间(自身):
self.button1.pack_忘记()
self.button2.pack_忘记()
self.button3.pack_忘记()
self.button4.pack_忘记()
self.l=标签(self.frame,text=“输入每次学习的时间(分钟)”)
self.button=按钮(
self.frame,text=“Get”,command=self.on\u按钮1)
self.entry=entry(self.frame)
自助按钮包(侧面=右侧)
自进式包装(侧面=左侧)
自升式包装(侧面=左侧)
def设置_中断(自):
self.button1.pack_忘记()
self.button2.pack_忘记()
self.button3.pack_忘记()
self.button4.pack_忘记()
self.l=标签(self.frame,text=“输入每次中断的时间(分钟)”)
self.button=按钮(
self.frame,text=“Get”,command=self.on_按钮2)
self.entry=entry(self.frame)
自助按钮包(侧面=右侧)
自进式包装(侧面=左侧)
自升式包装(侧面=左侧)
def设置_代表(自我):
self.button1.pack_忘记()
self.button2.pack_忘记()
self.button3.pack_忘记()
self.button4.pack_忘记()
self.l=Label(self.frame,text=“输入学习时间(分钟)”)
self.button=按钮(
self.frame,text=“Get”,command=self.on\u按钮3)
self.entry=entry(self.frame)
自助按钮包(侧面=右侧)
自进式包装(侧面=左侧)
自升式包装(侧面=左侧)
按钮1上的def(自身):
x=self.entry.get()
self.t_int=x
打印self.t\u int
self.button.pack_忘记()
self.entry.pack_忘记()
self.l.pack_忘记()
self.menu()
def on_按钮2(自身):
x=self.entry.get()
self.b_int=x
打印self.b_int
self.button.pack_忘记()
self.entry.pack_忘记()
self.l.pack_忘记()
self.menu()
def on_按钮3(自身):
x=self.entry.get()
self.reps=x
打印self.reps
self.button.pack_忘记()
self.entry.pack_忘记()
self.l.pack_忘记()
self.menu()
def定时器(自):
x=自整
y=自整
self.z=self.reps
当00时:
时间。睡眠(60)
n=Label(self.frame,text=“您的会话还有%r分钟”)%x
n、 包装(侧面=左侧)
x=x-1
n、 打包忘记
当y>0时:
时间。睡眠(60)
self.e=Label(self.frame,text=“休息时间还剩%r分钟”)%y
自助电子包(侧=左)
self.y=self.y-1
自助式包装
z=z-1
x=自整
y=自整
app=gui(根目录)
root.mainloop()
是的,在第113行,而0
没有正确缩进,它下面的所有行都没有正确缩进。我猜你的缩进不正确,循环实际上不在方法内部。缩进当前(仍然)不正确(def\u init\u
具有与类gui
相同的缩进),会导致一个语法错误。请确保此处的代码与您在计算机上运行的代码完全相同。由于制表符和空格的混合,您可能有混合的缩进,这在Python2(但不是Python3)中是合法的。使用混合缩进是一个非常糟糕的主意,因为编辑器对选项卡使用的宽度可能与Python内部使用的宽度不同。在Python2中,您可以通过使用运行Python使混合缩进发出警告,或者使用-tt
使其成为错误。