Liste kayıt siliniyor


#1
from kivy.app import App
from kivy.lang import Builder
from kivy.properties import NumericProperty

kv="""
BoxLayout:
	orientation:"vertical"
	Button:
		text:"Gir"
		size_hint_y:.2
		on_press:app.gir()

	TextInput:
		font_size:sp(22)
		size_hint_y:.2
		id:txt
	Button:
		text:"kayıt"
		size_hint_y:.2
		on_release:app.kayıt()
	Label:
	    id:lbl
"""
liste=["asd","ıjspe","ıtksh"]
class asd(App):
	sayac=NumericProperty(0)
	
	def build(self):
		return Builder.load_string(kv)
	def kayıt(self):
		liste.append(self.root.ids.txt.text)
	
	def gir(self):
		self.sayac+=1
		if self.sayac==len(liste):
			self.root.ids.lbl.text=str(liste[0])
			self.sayac=0#Başa sarıyor
		else:
			self.root.ids.lbl.text="%s"% liste[self.sayac]
			
asd().run()
#Listeye eleman ekliyorum ama programı kapatıp açınca girilen veri siliniyor.

#2

@abdul_yildiz merhaba, sanırım verileri kayıt etmeye ihtiyacınız var. Bu iş için veri tabanları kullanılabilir.

anahtar kavramlar:

  • sqlite3
  • configparser
  • json

İçimde kaldı.Json için 2 örnek atayım.
Verileri kaydetmek için:

import json

a = ["elma", "muz", "armut"]
kaydedilen = json.dumps(a)
with open("ayarlar_dosyası.txt", 'w') as f:
    f.write(kaydedilen)

Kaydolunan veriyi almak için:

import json

with open ("ayarlar_dosyası.txt") as f:
    dosyadaki_veri = f.read()
    kaydedilenler = json.loads(dosyadaki_veri)

for i in kaydedilenler:
    print(i)

Tek json ile kalmayın.Büyük projelerde etkisini yitirme olasılığı var.

Kolay gelsin :blush:


#3

Yazdığınız scripti bu haliyle çalıştırdığınızda salt okunur olarak düşünün. Yani Python verdiğiniz komutları okuyup uygulayacak ama program sonlandırıldığında script üzerinde değişiklik yapmadığınız için orijinal dosyaya işlemeyecek. Zaten orijinal dosyayı kendi kendisini değiştirecek şekilde yazmak mantıklı değil pek.

Öte yandan sorunuzun cevabı @Cihat_Altiparmak gönderisinde açıklanmış. Ben sadece şunu ekleyeyim: json tek seferlik ya da küçük çaplı veri gönderimi veya veri depolaması için kolay ve basit bir yöntemdir. Fakat uygulamanızın sürekliliği arttıkça sizin de verileriniz birikececeği için ilerde bu sorun yaratabilir sizin için.

Yukarıdaki durum dışında eğer verilerinizi bir nebze de olsa güvende tutmak isterseniz json kendisinde bir şifreleme mekanizması bulundurmamakta. Hatta plaintext (düzmetin) olarak saklamakta verileri. Diğer yandan Sqlite gibi veritabı seçenekleri size bir şifreleme olanağı sunmakta.


#4

Favori şiirlerimi ekleyeceğim uygulama yapacağım.Bu dosyaları txt formatımı yoksa json formatımı kullanmalıyım.


#5

JSON formatını kullanırsanız şiirin adına karşılık içeriğini kaydedebilirsiniz. Okuması kolay olur. Ancak txt dosyasına yazarsanız re modülüyle fazlasıyla haşır neşir olmak zorunda kalırsınız. Bu da okuma işini boştan yere uzatır.

Yani JSON formatını kullanmalısınız.


#6

Paketleme yaprken aidl hatası verdi.işletim sistemim ubuntu18,00. 64 bit.sudo apt-get install aidl yazıp indirip kurdum yine hatayı verdi.Yoksa ubuntunun 32 bitliğini kursam sonuç değişirmi.Veya başka bir linux dağıtımınamı geçmeliyim.
Spec dosyasındaki sdk ve ndk yı değiştirsem sorun çözülür mü.


#7

Şu başlığa daha önce bakmış mıydınız?


#8

Yanlız bu i386 32 bitlik için mi.benimki 64 bit.


#9

Fark etmiyor diye biliyorum. isterseniz bakın. https://github.com/kivy/buildozer/blob/master/docs/source/installation.rst#android-on-ubuntu-1604-64bit


#10

vermiş olduğun 64 bitlik link işe yaramadı.


#11

Sorununuzu çözdünüz mü?
Kullandığınız Java sürümü nedir?

update-alternatives --list java

#12

Enson senin verdiğin java sürününü kurdum.


#13

Peki yukarıdaki komutu kabuğa yazınca, sistemde kaç tane java sürümü gözüküyor? Daha önce sistemde java yüklü müydü?


#14

Yüklüydü.11 di ye hatırlıyorum.


#15

Peki şu komutu yazınca, hangisi seçili görünüyor?

update-alternatives --config java

#16

Şu anda evde değilim.Akşam bir deniyim.Yoksa sıkıntı javamı.Çünkü kurmadığım şey kalmadı.
İki java çıkarsa ne yamalıyı.


#17

Bir ihtimal sorunun daha önceden yüklü Java sürümünden kaynaklandığını düşünüyorum. Kivy paketleme ile ilgili verdiğim linkte, sistemdeki java sürümlerinin kaldırılıp, tekrar yüklenmesi ile alakalı bir kısım var. Oradaki işlemleri bir deneyin isterseniz. Daha önce aidl hatasını ben de almıştım. Hatta aidl’yi komut satırından yüklemek de sorunu çözmemişti. Sonra kivy paketlemede Java’nın 8 sürümünün kullanılmasının tavsiye edildiğini okumuştum bir yerlerde. Daha sonra da sorun çözülmüştü.

Siz derleme işleminin loglarına bir bakın, orada hangi Java sürümüyle derleme yapılmaya çalışıldığı belli olur.


#18

Android Sdk Manager yardımı ile build-tools yüklemelisiniz. Hatada belirtildiği gibi “build-tools folder not found” yazıyor. aidl bu klasör altında bulunan bir araç. Şöyle bir dizin yapısı altında

/home/you/.buildozer/android/platform/android-sdk-19/build-tools/19.1.0

Öncelikle sdk manager nerede bulmanız gerekiyor. Şu komutu terminal üzerinde çalıştırın ve sdk manageri açın.

~/.buildozer/android/platform/android-sdk-19/tools/android

19 değilse başka bir sürümdür. “.buildozer/android/platform” altında bakabilirsiniz.

Android Sdk Manager ekran görüntüsünü atarsanız daha fazla yardımcı olabiliriz.


#19

Teşekkür ederim.Aidl hatasının nedeni javanın 11 sürümü nü kurduğum içinmiş.Yanına 8 de kurmuştum hata verdi.hepsini baştan sildim java 8 yükledim sorun kalktı.
Aidl hatası alan arkadaşlar jdk 8 i yüklesinler.