08-07-2017, Saat: 15:53
Tekrar Merhaba.
Kivy'de label'ın içine textbox'tan gelen yazıyı yada sqlite database'den tek satır yazıyı yazdırabiliyorum fakat for döngüsü ile altalta dizilmiş kayıtları yazdıramıyorum.
- Cümleyi split ile parçalara ayırdıktan sonra kelimeleri bir yerde listelemem lazım.
- Sqlitetten bilgisayarın konuşması ile gelen cümleleri yazdırmam lazım
- benim yazdığım cümleleri onun altına yazmam lazım. Bi o bi ben chat konuşması gibi olacak yani.
Sonuçta ikisi de sanırım değişkeni kivy'ye atamayla ilgilidir belkide.
Örnek ( Biri textbox'a yazdığım diğeri , bilgisayarın veritabanından seçtiği cümle) :
- Nasılsın?
- İyiyim.
- Sen bir robotsun musun?
- Evet, ben bir robotum.
Şeklinde.
Bunun için listview varmış ama örnekler hep tırnak içinde önceden belirtilip hazır ifadeleri yazdırmayla ilgili... sqlite veritabanıyla ilgili örnekte bulamadım.
Örnek Split kodu :
item1 = self.adi.text
cumlebol=item1.split(' ')
for i in cumlebol:
Örnek veritabanı kodu :
db = sqlite3.connect("kayit.db")
im = db.cursor()
im.execute("""SELECT * FROM kayit""")
veriler = im.fetchall()
for i in veriler:
yada item1 = self.adi.text şeklinde
Ben textbox'a yazıp enter'a bastığımda sırasıyla görüntülenen listeye nasıl işlerim ? Örnek bir kod var mı bildiğiniz. Yardımcı olabilirseniz sevinirim.
Kivy'de label'ın içine textbox'tan gelen yazıyı yada sqlite database'den tek satır yazıyı yazdırabiliyorum fakat for döngüsü ile altalta dizilmiş kayıtları yazdıramıyorum.
- Cümleyi split ile parçalara ayırdıktan sonra kelimeleri bir yerde listelemem lazım.
- Sqlitetten bilgisayarın konuşması ile gelen cümleleri yazdırmam lazım
- benim yazdığım cümleleri onun altına yazmam lazım. Bi o bi ben chat konuşması gibi olacak yani.
Sonuçta ikisi de sanırım değişkeni kivy'ye atamayla ilgilidir belkide.
Örnek ( Biri textbox'a yazdığım diğeri , bilgisayarın veritabanından seçtiği cümle) :
- Nasılsın?
- İyiyim.
- Sen bir robotsun musun?
- Evet, ben bir robotum.
Şeklinde.
Bunun için listview varmış ama örnekler hep tırnak içinde önceden belirtilip hazır ifadeleri yazdırmayla ilgili... sqlite veritabanıyla ilgili örnekte bulamadım.
Örnek Split kodu :
item1 = self.adi.text
cumlebol=item1.split(' ')
for i in cumlebol:
Örnek veritabanı kodu :
db = sqlite3.connect("kayit.db")
im = db.cursor()
im.execute("""SELECT * FROM kayit""")
veriler = im.fetchall()
for i in veriler:
yada item1 = self.adi.text şeklinde
Ben textbox'a yazıp enter'a bastığımda sırasıyla görüntülenen listeye nasıl işlerim ? Örnek bir kod var mı bildiğiniz. Yardımcı olabilirseniz sevinirim.
PHP Kod:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#!/usr/bin/kivy
import sqlite3
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.config import Config
Config.set('kivy', 'keyboard_mode', 'system')
Config.write()
class main(App):
## Aslinda init fonksiyonunda veritabanini acmaya gerek yok
## Ama yine de init ornegi olsun diye yazdim.
def __init__(self, **kwargs):
super(main, self).__init__(**kwargs)
## self.conec=sqlite3.connect('kayit.db')
## self.cur = self.conec.cursor()
## ## cumle adli tabloyu ekliyoruz
## self.cur.execute('''CREATE TABLE IF NOT EXISTS kayit (cumle)''')
## self.conec.commit()
## self.conec.close()
def build(self):
duzen = GridLayout(cols=2,spacing=5, padding=30,row_force_default=True, row_default_height=40)
self.lbl1 = Label(text="Selam, birşeyler yaz:".decode('utf-8'), height=20)
duzen.add_widget(self.lbl1)
duzen.add_widget(Widget())
self.adi = TextInput(text='', multiline=False,height=20)
self.adi.bind(on_text_validate=self.callback)
duzen.add_widget(self.adi)
gir_dugme=Button(text='Yaz ve Gönder')
gir_dugme.bind(on_press=self.callback)
duzen.add_widget(gir_dugme)
self.title = " "
self.yenilbl = Label(text="Konuşma yeri...", height=10)
duzen.add_widget(self.yenilbl)
return duzen
def callback(self, event):
## Bu sekilde text aliyoruz
self.lbl1.text = "Dedin ki; " + self.adi.text.capitalize()
item1 = self.adi.text
db = sqlite3.connect("kayit.db")
im = db.cursor()
im.execute("""SELECT * FROM kayit""")
veriler = im.fetchall()
for i in veriler:
if i[0]==item1:
self.ekleme()
return main
if item1=="" or item1==" " :
self.ekleme()
else:
self.cumleekle()
def cumleekle(self):
## cümleyi ekle
item1 = self.adi.text
self.conec=sqlite3.connect('kayit.db')
self.cur = self.conec.cursor()
self.cur.execute('''CREATE TABLE IF NOT EXISTS kayit (cumle)''')
self.cur.execute('''INSERT INTO kayit (cumle) VALUES (?)''', (item1,))
print "yeni cümle eklendi"
## cümleyi kelimelere ayır - ekle
cumlebol=item1.split(' ')
for a in cumlebol:
self.cur.execute('''INSERT INTO kelimegirisi (kelime) VALUES (?)''', (a,))
print "Kelimeler eklendi"
self.ek()
def kkontrol(self):
## sözlükten kelime var mı kontrolü yap
item1 = self.adi.text
cumlebolb=item1.split(' ')
for i in cumlebolb:
self.conecb=sqlite3.connect('kayit.db')
self.curb = self.conecb.cursor()
self.curb.execute('''SELECT * FROM turkcekelimeler where tumkelimeler like(?)''', (i,))
verilerb = self.curb.fetchall()
for c in verilerb:
if [c[0]]==[str(cumlebolb[0])] :
print "Sözlükten baktım bu kelime var"
self.ek()
def ek(self):
## Kelimelerin sonunda ek var mı kontrolü
item1 = self.adi.text
cumlebolek=item1.split(' ')
ek=[str(cumlebolek[0])]
for i in ek:
if i.endswith("dır") or i.endswith("dir") or i.endswith("tir") or i.endswith("tır") or i.endswith("dur") or i.endswith("dür") or i.endswith("dur") or i.endswith("tür") or i.endswith("tur") :
print "sonunda dır veya dir gibi ekler var"
## Burada içinde dir/dir/tır/tir/dur/dür eki varsa ona göre işlem yap
self.aliye()
def aliye(self):
## Bu kısım bilgisayarın cümleyi alıp yorum yapacağı yer. Geliştirilecek..
self.yenilbl.text = "Aliye: " + "Test konuşma içeriği..."
if self.adi.text=="merhaba" or self.adi.text=="Merhaba" or self.adi.text=="MERHABA":
self.yenilbl.text = "Aliye: " + "Merhaba."
self.conec.commit()
self.conec.close()
return main
def ekleme(self):
print "eklenmedi"
self.adi.text=""
self.aliye()
main().run()



