Есть несколько вопросов:
1) Выберите один способ импорта tkinter, иначе возникнет путаница
2) Вы должны предоставить мастера для своих фреймов, а затем упаковать их. Обратите внимание на то, где появляются кадры и что они содержат.
3) Обычно для Записи присваивается текстовая переменная, которая будет содержать то, что вы вводите в нее. Текстовая переменная должна быть tk.StringVar.
4) Если у кнопки есть функция обратного вызова, она должна быть определена перед созданием кнопки.
5) Переменная fred не определена.
Пример того, как вы можете написать это:
import tkinter as tk
root = tk.Tk()
root.title('Fractals') #titles the button box
# Create the Label at the top
top_frame = tk.Frame(root) # Top Frame for
top_frame.pack()
prompt_label = tk.Label(top_frame,
text='Enter a number of iterations (more is better):')
prompt_label.pack()
# Create the Entry in the middle
mid_frame = tk.Frame(root)
mid_frame.pack()
itr_string = tk.StringVar()
iterations = tk.Entry(mid_frame,textvariable=itr_string)
iterations.pack()
fred=None # Was not defined...
# Create Buttons at the bottom
bot_frame = tk.Frame(root)
bot_frame.pack()
button = tk.Button(bot_frame, text="QUIT", fg="red", command=quit)
button.pack(side=tk.LEFT)
def sierpinski(*args): # sTriangle button callback function
itr = int(itr_string.get()) # How to get text from Entry
# if Entry does not contain an integer this will throw an exception
sTriangle = tk.Button(bot_frame, text="Triangle",
command=lambda: sierpinski(fred, (-500,-500), (500,-500),(0,500),itr_string))
sTriangle.pack(side=tk.LEFT)
def fractalsquare(*args): pass # fsquare button callback function
fsquare = tk.Button(bot_frame, text="Square", command=fractalsquare(fred,
(-500,-500),(500,-500),(500,500),(-500,500),itr_string))
fsquare.pack(side=tk.LEFT)
root.mainloop()
Вы должны серьезно изучить базовое руководство по tkinter. Попробуйте это: Введение в Tkinter