Python Tkinter Entry ile Alınan Girdiyi Dosya Olarak Kaydetme

Merhabalar,

Python Türkçe Yama isimli bir projem var ve bilmediğim bir sorun ortaya çıktı.Entry benden dosya ismi alacak,ve program <dosya_ismi>.py olarak kaydedecek nasıl yaparım?

Merhaba.

entry nesnesinin get metodu ile içerisinde yazılı bulunan metne erişebilirsiniz. Bir örnek için buraya bakabilirsiniz:


open fonksiyonunu inceleyebilirsiniz.

open fonksiyonu ile kullandığımda maalesef Shell ekranında str olamayacağını söylüyor :frowning:

Anlayamadım, kodunuzu ve aldığınız hatayı yazabilir misiniz?

#Gencay BİLİR
#Ankara,Türkiye

#Modüller
from tkinter import *
import os

#Fonksiyonlar
def Kapat():
    exit()
    
def Çalıştır():
    pass

def Durdur():
    pass

def Modül_Ekle():
    pass

def Ayarlar():
    Ayarlar_Ekranı = Toplevel()
    Ayarlar_Ekranı.title("Ayarlar")
    Ayarlar_Ekranı.geometry("400x250+400+100")
    
    Butonları_Özelleştir_Tuşu = Button(Ayarlar_Ekranı,text = "Tuşları Özelleştir",bg="white", command = Butonları_Özelleştir)
    Butonları_Özelleştir_Tuşu.place(x = 20, y = 10)

def Proje_Aç():
    pass
    
def Proje_Oluşturma():
    Dosya_Oluşturma_Ekranı = Toplevel()
    Dosya_Oluşturma_Ekranı.title("Dosya Kaydetme")
    Dosya_Oluşturma_Ekranı.geometry("350x75+500+150")
    
    Dosya_İsmi_İste = Label(Dosya_Oluşturma_Ekranı, text = "Dosya İsmi: ")
    Dosya_İsmi_İste.pack()
    
    Dosya_İsmi_Al = Entry(Dosya_Oluşturma_Ekranı)
    Dosya_İsmi_Al.pack()
    
    Onay_Butonu = Button(Dosya_Oluşturma_Ekranı,bg="white", text = "Tamam")
    Onay_Butonu.pack()
    
    os.chdir('C:/Users/ONAY/Desktop/Python Türkçe Yama/Test Sürümü/Projeler')

def Çalıştır_Tuşu_Özelleştir():
    Çalıştır_Tuşu_Özelleştir_Ekranı = Toplevel()
    Çalıştır_Tuşu_Özelleştir_Ekranı.title("Çalıştır Tuşu Özelleştirme")
    Çalıştır_Tuşu_Özelleştir_Ekranı.geometry("150x100+100+100")

def Modül_Ekle_Tuşu_Özelleştir():
    pass

def Ayarlar_Tuşu_Özelleştir():
    pass

def Proje_Açma_Tuşu_Özelleştir():
    pass

def Proje_Kaydetme_Tuşu_Özelleştir():
    pass

def Butonları_Özelleştir():
    Tuş_Özelleştirme_Ekranı = Toplevel()
    Tuş_Özelleştirme_Ekranı.title("Tuşları Özelleştir")
    Tuş_Özelleştirme_Ekranı.geometry("300x200+500+100")
    
    Çalıştır_Tuşu_Özelleştir_Tuşu = Button(Tuş_Özelleştirme_Ekranı,text = "Çalıştır Tuşu'nu Özelleştir",bg="white", command = Çalıştır_Tuşu_Özelleştir)
    Çalıştır_Tuşu_Özelleştir_Tuşu.place(x = 20, y = 10)

    Modül_Ekle_Tuşu_Özelleştir_Tuşu = Button(Tuş_Özelleştirme_Ekranı,text = "Modül Ekle Tuşu'nu Özelleştir",bg="white", command = Modül_Ekle_Tuşu_Özelleştir)
    Modül_Ekle_Tuşu_Özelleştir_Tuşu.place(x = 20, y = 40)

    Ayarlar_Tuşu_Özelleştir_Tuşu = Button(Tuş_Özelleştirme_Ekranı,text = "Ayarlar Tuşu'nu Özelleştir",bg="white", command = Ayarlar_Tuşu_Özelleştir)
    Ayarlar_Tuşu_Özelleştir_Tuşu.place(x = 20, y = 70)

    Proje_Aç_Tuşu_Özelleştir_Tuşu = Button(Tuş_Özelleştirme_Ekranı,text = "Proje Açma Tuşu'nu Özelleştir",bg="white", command = Proje_Açma_Tuşu_Özelleştir)
    Proje_Aç_Tuşu_Özelleştir_Tuşu.place(x = 20, y = 100)

    Proje_Kaydetme_Tuşu_Özelleştir_Tuşu = Button(Tuş_Özelleştirme_Ekranı,text = "Proje Kaydetme Tuşu'nu Özelleştir",bg="white", command = Proje_Kaydetme_Tuşu_Özelleştir)
    Proje_Kaydetme_Tuşu_Özelleştir_Tuşu.place(x = 20, y = 130)

#Ekran
Ekran = Tk()
Ekran.attributes('-fullscreen', True)

#Kod Yazma Bölümü
Kod_Yazma_Bölümü = Text()
Kod_Yazma_Bölümü.place(x = 50, y = 35, height = 700, width = 800)

#Çok Yönlü Ekran
Çok_Yönlü_Ekran = Text()
Çok_Yönlü_Ekran.place(x = 900, y = 20, height = 730, width = 400)

#Tuşlar
Kapatma_Tuşu = Button(text = "Kapat",bg = "red",command = Kapat)
Kapatma_Tuşu.place(x = 1310, y = 5)

Çalıştır_Tuşu = Button (text = ">",bg="white",activebackground = "light green",command = Çalıştır)
Çalıştır_Tuşu.pack()
Çalıştır_Tuşu.place(x = 50, y = 5, width = 90)

Durdur_Tuşu = Button (text = "||",bg="white",activebackground = "red",command = Durdur)
Durdur_Tuşu.pack()
Durdur_Tuşu.place(x = 150, y = 5, width = 90)

Modül_Tuşu = Button(text = "Modül Ekle",bg="white", command = Modül_Ekle)
Modül_Tuşu.pack()
Modül_Tuşu.place(x = 250, y = 5, width = 90)

Ayarlar_Tuşu = Button(text = "Ayarlar",bg="white", command = Ayarlar)
Ayarlar_Tuşu.pack()
Ayarlar_Tuşu.place(x = 350, y = 5, width = 90)

Proje_Aç_Tuşu = Button(text = "Proje Aç",bg="white", command = Proje_Aç)
Proje_Aç_Tuşu.pack()
Proje_Aç_Tuşu.place(x = 655, y = 5, width = 90)

Kaydet_Tuşu = Button(text = "Projemi Kaydet",bg="white", command = Proje_Oluşturma)
Kaydet_Tuşu.pack()
Kaydet_Tuşu.place(x = 760, y = 5, width = 90)

#Süreklilik
Ekran.mainloop()

Ben burada projeyi kaydet tuşu ile Entry’ye yazılacak ismi alıp <dosya_ismi>.py yapmak istiyorum.Proje kaydet tuşuna bakabilirseniz sevinirim

Bu işinizi görüyor mu acaba:

def Projeyi_Kaydet():
    dosya_ismi = Dosya_İsmi_Al.get()
    print(dosya_ismi)
    with open(dosya_ismi + ".py", "w"):
        pass


def Proje_Oluşturma():
    global Dosya_İsmi_Al
    Dosya_Oluşturma_Ekranı = Toplevel()
    Dosya_Oluşturma_Ekranı.title("Dosya Kaydetme")
    Dosya_Oluşturma_Ekranı.geometry("350x75+500+150")
    
    Dosya_İsmi_İste = Label(Dosya_Oluşturma_Ekranı, text = "Dosya İsmi: ")
    Dosya_İsmi_İste.pack()
    
    Dosya_İsmi_Al = Entry(Dosya_Oluşturma_Ekranı)
    Dosya_İsmi_Al.pack()
    
    Onay_Butonu = Button(Dosya_Oluşturma_Ekranı,bg="white", text = "Tamam", command = Projeyi_Kaydet)
    Onay_Butonu.pack()

Lütfen değişken ve fonksiyonlarınızın isimlerini de küçük harfler ile yazın, kodu bu hali okumak çok zor.

12 yaşımda olduğum için haftaya cumartesi almam gerekecek.Yazdığınız kod çalışacaktır yüksek ihtimalle.Proje oluşturmada “global” ne işe yarıyor acaba?

Maalesef ben büyük harflerle yazıyorum.Herkesin yazımı farklı…

Fonksiyonlarin disinda, modul scope’unda tanimlanan (“global”) degiskenin fonksiyon icinden yazilabilir olmasini sagliyor.

a = 3

def foo():
    a = 4

def bar():
    global a
    a = 5

print(a) # 3
foo()
print(a) # 3
bar()
print(a) # 5

Malesef ben de buyuk harflerle yazilan kodlari okumayi reddediyorum.

Insanlarin ne kadar sikintili ve kaprisli varliklar oldugunu ne kadar erken ogrenirseniz o kadar iyi :slight_smile:

(@EkremDincel’in emin ellerinde olmasaniz yardim ederdim, o kadar da degil :). Ama buyuk harfle baslayan degiskenli koda kufretme haklimi sakli tutuyorum.)

1 Beğeni