Merhaba. Bir yapılacaklar listesi programı yazıyordum ve kullanıcının kararına göre ekrana yazdırılan yazıların sesli okunmasını istedim. İlk kodladığımda sorunsuz çalışıyordu fakat diğer fonksiyonları biraz düzenlediğimde çalışmaz hale geldi(Bazı fonksiyonlar yarım yamalak çünkü daha onları bitirmeye zamanım olmadı ama hatalı çalışan fonksiyonun diğerleriyle bir bağlantısı yok).Hatalı fonksiyon =
say()
Python:
import pickle
import time
import gtts
import playsound
import os
import datetime
operations = ["görev_ekle", "görev_çıkart", "görevleri_say",
"görev_hatırlatıcısı",
"görev_düzenleme", "yardım", "sessiz_ol", "konuş"
, "sıfırla"
]
class Görev:
def __init__(self, name="Yok", details="Yok", alarm="Yok"):
self.alarm = alarm
self.name = name
self.details = details
def set_alarm(self, new):
self.alarm = new
def set_name(self, new):
self.name = new
def set_details(self, new):
self.details = new
def tell_name(self):
return self.name
def tell_details(self):
return self.details
def tell_alarm(self):
return self.alarm
try:
with open("Tasks.pkl", "rb") as file:
file.seek(0)
data = pickle.load(file)
if not isinstance(data, dict):
raise TypeError
except:
with open("Tasks.pkl", "wb") as file:
data = {}
pickle.dump(data, file)
try:
with open("Sound.pkl", "rb") as file:
file.seek(0)
speak = pickle.load(file)
if not (speak is True or speak is False):
raise FileNotFoundError
except FileNotFoundError:
with open("Sound.pkl", "wb") as file:
pickle.dump(False, file)
speak = False
# Hatalı fonksiyon
def say(what):
global speak
print(what)
if speak:
talk = gtts.gTTS(str(what), lang="tr", slow=False)
talk.save("saying.mp3")
time.sleep(0.5)
playsound.playsound("saying.mp3")
os.remove("saying.mp3")
def görev_ekle():
say("ad dışındakiler optioneldir")
name = input("Görev adı: ")
details = input("Görev detayları: ")
with open("Tasks.pkl", "rb") as file:
file.seek(0)
data = pickle.load(file)
if name in data.keys():
say("Üzgünüm, bu isimde bir öğe zaten kaydedilmiş")
return
data[name] = Görev(name=name, details=details)
with open("Tasks.pkl", "wb") as file:
pickle.dump(data, file)
say("Listeye eklendi!")
def görev_çıkart():
name = input("Görev adı: ")
with open("Tasks.pkl", "rb") as file:
file.seek(0)
data = pickle.load(file)
if name not in data:
say("Üzgünüm, aradığınız öğeyi bulamadım")
return
del data[name]
with open("Tasks.pkl", "wb") as file:
pickle.dump(data, file)
def görevleri_say():
with open("Tasks.pkl", "rb") as file:
file.seek(0)
data = pickle.load(file)
for details in data.values():
say(f"{details.tell_name()} : ({details.tell_details()} | {details.tell_alarm()})")
def sessiz_ol():
do_I = False
with open("Sound.pkl", "wb") as file:
pickle.dump(do_I, file)
talk()
def konuş():
do_I = True
with open("Sound.pkl", "wb") as file:
pickle.dump(do_I, file)
talk()
def talk():
global speak
with open("Sound.pkl", "rb") as file:
file.seek(0)
speak = pickle.load(file)
say("Başarılı!")
def sıfırla():
with open("Tasks.pkl", "wb") as file:
data = {}
pickle.dump(data, file)
say("Başarılı")
def correction(sentence):
returned_sentence = sentence
if " " in sentence:
for letter in returned_sentence:
if letter == " ":
returned_sentence = returned_sentence.replace(letter, "_")
return returned_sentence.lower()
def görev_hatırlatıcısı():
say("İstenilen verileri boş bırakırsanız o anki tarihe ayarlanır.")
say("yani yılı boş bırakınca 2023 olarak ayarlanması gibi.")
tarih_yıl = input("Yıl: ")
tarih_yıl = datetime.datetime.now().year if len(tarih_yıl.strip()) == 0 else int(tarih_yıl)
tarih_ay = input("Ay: ")
tarih_ay = datetime.datetime.now().month if len(tarih_ay.strip()) == 0 else int(tarih_ay)
tarih_gün = input("Gün: ")
tarih_gün = datetime.datetime.now().day if len(tarih_gün.strip()) == 0 else int(tarih_gün)
tarih_saat = input("Saat: ")
tarih_saat = datetime.datetime.now().hour if len(tarih_saat.strip()) == 0 else int(tarih_saat)
tarih_dakika = input("Dakika: ")
tarih_dakika = datetime.datetime.now().minute if len(tarih_dakika.strip()) == 0 else int(tarih_dakika)
tarih = datetime.datetime(tarih_yıl, tarih_ay, tarih_gün, tarih_saat, tarih_dakika)
def yardım():
print("""
/Yardım = Size komutları söyler.
/Sessiz ol = Konuşmayı devre dışı bırakır.
/Konuş = Konuşmayı açar.
/Görev ekle = Görev eklemenizi sağlar. Başlık (zorunlu), açıklama (isteğe bağlı).
/Görev çıkart = Görev çıkartmanızı sağlar. Aradığınız başlık bulunamazsa uyarır.
/Görevleri say = Kayıtlı görevlerinizi söyler.
Görev hatırlatıcısı = Görevinizi istediğiniz zaman hatırlatır.
Görev düzenleme = Adını söylediğiniz görevi düzenlemenizi sağlar
/Sıfırla = Görev listesini sıfırlar sistemde hata oluşursa düzeltmede yararlıdır
NOT: Başdaki \"/\" işaretini koymayınız
""".strip()
)
# Kodu exe dosyası olarak çıkarttığımda kodun açıldığı bir konsol olacak o yüzden bu satırı ekledim ayrıca görev hatırlatıcısı daha tam bitmedi
say("Bu pencere Görev hatırlatıcılarının çalışması için gereklidir kapatmak yerine alta alın")
say("Komutları öğrenmek için yardım yazın")
while True:
operation = input("İşleminiz:")
operation = correction(operation)
say(f"komutunuz: {operation}")
if operation in operations:
say("Başarılı!")
exec(f"{operation}()")
else:
say("Başarısız(komut bulunamadı)")
Son düzenleyen: Moderatör: