import gradio as gr import sys from io import StringIO def run_python_code(user_code): # Standart çıktıyı yakalamak için (print sonuçlarını görmek için) old_stdout = sys.stdout redirected_output = sys.stdout = StringIO() try: # Kullanıcının yazdığı kodu çalıştır exec(user_code) sys.stdout = old_stdout result = redirected_output.getvalue() return result if result else "Kod çalıştı ama bir çıktı (print) üretmedi." except Exception as e: sys.stdout = old_stdout return f"❌ Hata: {str(e)}" # Arayüz Tasarımı with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown("# 🚀 Codeia: Geleceğin Yazılımcı Akademisi") gr.Markdown("Kıraaal, hoş geldin! Bugün kodlamanın temellerini söküyoruz.") with gr.Tabs(): # 1. SEKME: DERS 1 with gr.TabItem("Ders 1: Değişkenler"): with gr.Row(): with gr.Column(scale=1): gr.Markdown(""" ### 📝 Değişken Nedir? Değişkenler, veri saklamak için kullandığımız kutular gibidir. Python'da bir kutu oluşturmak çok kolaydır: `isim = "Talha"` **Görev:** Aşağıdaki alana kendi ismini bir değişkene ata ve ekrana yazdır! """) with gr.Column(scale=1): code_input = gr.Code(label="Python Kodunu Yaz", language="python", lines=10) output_text = gr.Textbox(label="Çalıştırma Sonucu", interactive=False) run_btn = gr.Button("Kodu Test Et", variant="primary") run_btn.click(fn=run_python_code, inputs=code_input, outputs=output_text) # 2. SEKME: DERS 2 (Buraya yeni dersler ekleyebilirsin) with gr.TabItem("Ders 2: Sayılarla İşlemler"): gr.Markdown("Buraya da ikinci dersin içeriğini geleceğiz moruk.") demo.launch()