Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自我没有定义?_Python_Python 2.7_Tkinter - Fatal编程技术网

Python 自我没有定义?

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

我试图制作一个基本的学习时钟作为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 < 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
使其成为错误。