Basit Bir Sohbet Ekranı Lazım

kivy’de hazırlanmış bir sohbet ekranına ihtiyacım var. bu konuda yardımcı olacak var mı? sohbet ekranı aşağıdaki gibi olacak. (ücret karşılığı yapacak olan varsa o da olur)

İstenen şey: Ben aşağıdaki yere merhaba yazacağım program karşılığında bene merhaba diyecek. o kadar.

yani bir chat botu gibi bir şey mi istiyorsunuz

1 Beğeni

şöyle bir şey yapabilirsiniz: gönderilen mesajlara bakıp eğer merhaba yazdı ise mesaj göndermesini sağlayabilirsiniz

1 Beğeni
1 Beğeni

evet aynen öyle :)…

evet öyle yapıyor. biraz daha karmaşık hatta. ama ekranı yapamadım.

program güzel ama benim yazdığımdan çok farklı. dil kütüphanesini kullanmış. ben kendim çok basit bir şeklini oluşturmaya çalıştım.

Ekran yapılabilir Ama sohbet baloncukları biraz zor Akşam biraz uğraşırım

1 Beğeni

sohbet baloncukları zaten frame olmayacak mı sadece köşelerini yuvarlak yapacaksın ki onu da internetten bulursun.

2 Beğeni

demlemeye bırakmıştım. bitiresim geldi. ama ekran dediğim gibi olmuyor. çünkü kivy bilmiyorum.

Şimdi senin tam olarak amacın nedir ? Telefonlar için mi bir şey yapacaksın ? Yoksa bilgisayarlar için mi ?

APP. telefon için. Android. basit bir ChatBot

O zaman python yerine başka bir dil kullansanız daha iyi olur çünkü python ile bu projeyi yapmak hem çok zaman alır hemde kalitesiz olur. Çünkü python aslında bunun için tasarlanmış bir dil değil. Bu iş için ya java yada bu iş için tasarlanmış bir dil kullanırsanız daha iyi olur.

1 Beğeni

python’un kodlaması çok iyi. çok basit. sadece ekran kısmı lazım aslında. onuda kivy hallediyor sanırım ama benim kivy bilgim yok.

baloncuk olmasın, kutu olsun :slight_smile:

Elimden Geleni Yaptm final haftası zamanım pek yok

2 Beğeni

Gayet güzel bence ama ben oradan veriyi nasıl alacağım. oraya veriyi nasıl aktaracağım. Benim programın önceki halini az çok biliyorsun sen. iki yazılımın uyumu ?
(Sınavlardan sonra mı bakarız?)

hangi veri ? tam olarark

Akşam bakarım

#!/usr/bin/env python
#-*-coding:utf-8-*-
from kivy.app import App
from kivy.uix.label import Label
from kivy.lang import Builder
from kivy.uix.stacklayout import StackLayout
from kivy.uix.widget import Widget
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.textinput import TextInput
from kivy.uix.anchorlayout import AnchorLayout
from kivy.config import Config
from kivy.uix.image import Image
from kivy.uix.button import Button
from kivy.core.window import Window
from kivy.uix.button import Button
from kivy.uix.screenmanager import Screen
from data_01 import ek1
import time
import random
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import sys

Window.clearcolor=(200/255, 70/255,10/255,1)
Window.softinput_mode = "below_target"

boy1=663
en1=300
Window.size = (en1, boy1)
beden_dilim="1" #ekranda görünecek olan fotoğraf.
kv = '''
           
<MainBoxLayout>:
	orientation:"vertical"
	canvas:
		Color:
			rgba:0,0,0,0,1
		Rectangle:
			size:self.size
			pos:self.pos
			source: 'arka_fon.png'
	id:boxlayout
	BoxLayout:
		size_hint_y:.75
		border:10
		ScrollView:
			id:scrlv
			Image:
				id:lokum
				#size_hint_y:None
				source: 'beden_dili_1.png'
				multiline:False
				#padding:5,5,5,5
				#height: 35
          
   
	ScrollView:
		id:scrlv
		GridLayout:
			spacing:0
			id:layout
			background_color:197/255,131/255,200/255,1
			cols:1
			size_hint_y:None
			height:max(self.minimum_height, scrlv.height)			
			padding:0,20,0,0

	BoxLayout:
		size_hint_y:.118
		border:10
		ScrollView:
			id:scrlv
			TextInput:
				id:konus
				#size_hint_y:None
				font_size:konus.height-10
				multiline:False
				#padding:5,5,5,5
				hint_text:"Mesaj Yaziniz."
				height: max( (len(self._lines)+1) * self.line_height, scrlv.height) #orjinali bu
				#height: 35		
		Button:
			#size_hint_x:0.13
			size_hint:None,None
			#text: 'Gönder'
			height: konus.height
			width: konus.height
			#padding:5,5,5,5
			background_normal:"gon01.png"
			background_down:"gon02.png"
			on_release:root.pressed()
'''

Builder.load_string(kv)

class StartScreen(Screen):
    pass

class SmoothLabel(Label):
    @staticmethod
    def create_sized_label(**kwargs):
        max_width = kwargs.pop('max_width', 0)
        if max_width <= 0:
            # just create a SmoothLabel without a text_size
            return SmoothLabel(**kwargs)

        # calculate what the SmoothLabel size will be
        core_label = CoreLabel(padding=[10,10], **kwargs)  # use same padding as SmoothLabel
        core_label.refresh()

        if core_label.width > max_width:
            # width is too big, use text_size to force wrapping
            return SmoothLabel(text_size=(max_width,None), **kwargs)
        else:
            # width is OK, no need for text_size
            return SmoothLabel(**kwargs)
        
tum_konusma=[]
mis_ad=""
mis_soyad=""
mis_meslek=""
mis_memleket=""
mis_cinsiyet=""
mis_burc=""

def kutu_uzunluk(n): #sorulan sorunun uzunluğuna göre kutu boyutu belirleniyor
    p=len(n)
    if p<7:
        a='a001.png'
    elif p<8:
        a='a002.png'
    elif p<9:
        a='a003.png'
    elif p<11:
        a='a004.png'
    elif p<13:
        a='a005.png'
    elif p<15:
        a='a007.png'
    elif p<17:
        a='a008.png'
    elif p<19:
        a='a010.png'
    elif p<21:
        a='a011.png'
    elif p<23:
        a='a012.png'
    elif p<25:
        a='a012.png'
    elif p<27:
        a='a013.png'
    elif p<29:
        a='a014.png'
    elif p<31:
        a='a015.png'
    elif p<33:
        a='a016.png'
    elif p<35:
        a='a017.png'
    elif p<37:
        a='a018.png'
    elif p<39:
        a='a019.png'
    elif p<41:
        a='a020.png'
    elif p<43:
        a='a021.png'
    else:
        a='a022.png'
    return a

def satir_say(n): #ekrana çıkan cevabın satırlara ayrılması için
    satir=1
    b=len(n)
    x=n.split()
    p,n=0,0
    for k in range(len(x)):
        p=p+len(x[k])+1
        if p>30 and p<40 and b-p<=10:
            satir+=1
            p=0
        elif p>30 and p<40:
            satir+=1
            p=0
        elif p>39:
            satir+=1
            p=len(x[k])+1
    if satir==1:
        satir=30
    elif satir==2:
        satir=40
    elif satir==3:
        satir=50
    elif satir==4:
        satir=65
    elif satir==5:
        satir=80
    elif satir==6:
        satir=90
    elif satir==7:
        satir=100
    elif satir==8:
        satir=110
    else:
        satir=120
    if n==" ":
        satir=120
    return satir

def bot_balon(n):
    if n==" ":
        a='b002.png'
    else:
        a='b001.png'
    return a

def yuz_ifadem(a1): # sorulan sorulara göre yüz ifadesi değişecek
    a=len(a1)
    dd='beden_dili_2.png'
    if a>1:
        son_kar=a1[a-1:a]
        if son_kar=="1" or son_kar=="2" or son_kar=="3" or son_kar=="4" or son_kar=="5" or son_kar=="6" or son_kar=="7" or son_kar=="8" or son_kar=="9": 
            print(a1,"son karakter: ",son_kar," ",a1)
            a1=a1[0:a-1]
            if son_kar=="1":
                dd="beden_dili_1.png"
                beden_dilim="1"
            elif son_kar=="2":
                dd="beden_dili_2.png"
                beden_dilim="2"
            elif son_kar=="3":
                dd="beden_dili_3.png"
                beden_dilim="3"
            elif son_kar=="4":
                dd="beden_dili_4.png"
                beden_dilim="4"
            elif son_kar=="5":
                dd="beden_dili_5.png"
                beden_dilim="5"
            elif son_kar=="6":
                dd="beden_dili_6.png"
                beden_dilim="6"
            elif son_kar=="7":
                dd="beden_dili_7.png"
                beden_dilim="7"
            elif son_kar=="8":
                dd="beden_dili_8.png"
                beden_dilim="8"
            elif son_kar=="9":
                dd="beden_dili_9.png"
                beden_dilim="9"
            else:
                if beden_dilim=="1":
                    dd="beden_dili_1.png"
                elif beden_dilim=="2":
                    dd="beden_dili_2.png"
                elif beden_dilim=="3":
                    dd="beden_dili_3.png"
                elif beden_dilim=="4":
                    dd="beden_dili_4.png"
                elif beden_dilim=="5":
                    dd="beden_dili_5.png"
                elif beden_dilim=="6":
                    dd="beden_dili_6.png"
                elif beden_dilim=="7":
                    dd="beden_dili_7.png"
                elif beden_dilim=="8":
                    dd="beden_dili_8.png"
                elif beden_dilim=="9":
                    dd="beden_dili_9.png"
            
    return dd,a1


def kelime_ayir(n): #ekrana çıkan cevabın satırlara ayrılması için
    satir=1
    b=len(n)
    x=n.split()
    bs="     "
    tum=bs
    p,y,r=0,0,0
    for k in range(len(x)):
        p=p+len(x[k])+1
        y=y+p
        if p>30 and p<40 and y==p:
            satir+=1
            tum=tum+x[k]
            p=0
        elif p>30 and p<40 and b-p<=10:
            satir+=1
            tum=tum+" "+x[k]
            p=0
        elif p>30 and p<40 and k!=len(x):
            satir+=1
            tum=tum+" "+x[k]+"\n"+bs
            p=0
        elif p>30 and p<40 and k==len(x):
            satir+=1
            tum=tum+" "+x[k]
            p=0
        elif p>39:
            satir+=1
            tum=tum+"\n"+bs+x[k]+" "
            p=len(x[k])+1
        else:
            tum=tum+" "+x[k]
    return tum

def saat():
    yerel_saat = time.localtime(time.time())
    saat1=yerel_saat
    if saat1.tm_hour<10:
        st="0"+str(saat1.tm_hour)
    else:
        st=str(saat1.tm_hour)
    if saat1.tm_min<10:
        dak="0"+str(saat1.tm_min)
    else:
        dak=str(saat1.tm_min)
    a=st+":"+dak
    return a

      


def mukayese(a1,bolum):
    x=a1.split()
    a7=a1
    b=0
    a1=""
    for a in range(len(x)):
        if x[a]=="mi" or x[a]=="mı" or x[a]=="mu" or x[a]=="mü":
            b+=1
        else:
            if (x[a]=="yoksa") or (x[a]=="kazanır")\
               or (x[a]=="daha" and x[a+1]=="güvenli") or (x[a-1]=="daha" and x[a]=="güvenli")\
               or (x[a]=="daha" and x[a+1]=="güzel") or (x[a-1]=="daha" and x[a]=="güzel")\
               or (x[a]=="daha" and x[a+1]=="yakışıklı") or (x[a-1]=="daha" and x[a]=="yakışıklı")\
               or (x[a]=="daha" and x[a+1]=="sağlıklı") or (x[a-1]=="daha" and x[a]=="sağlıklı")\
               or (x[a]=="daha" and x[a+1]=="hızlı") or (x[a-1]=="daha" and x[a]=="hızlı")\
               or (x[a]=="daha" and x[a+1]=="iyi") or (x[a-1]=="daha" and x[a]=="iyi"):
                c=0
                #bolum="+" # + olduğunda iyi olan seçilecek
            else:
                if a1=="":
                    a1=x[a]
                else:
                    a1=a1+" "+x[a]
    if b==2:
        bolum="m"
        return a1,bolum
    else:
        a1=a7
        return a1, bolum

def cevapsiz(a1,bolum):
    x=len(a1)
    a1=a1[0:x-1]
    if bolum=="1":
        k2="Anlamadım. farklı bir şekilde ifade eder misin?"
        return k2
    if bolum=="2":
        k2="Bunun anlamını bilmiyorum. Sanırım daha çok kitap okumalıyım."
        return k2
    if bolum=="3":
        k2=a1+" kim bilmiyorum ama en kısa sürede öğreneceğim..."
        return k2
    if bolum=="4":
        k2="Böyle bir ülke mi var! Hemen ararştırıyorum."
        return k2
    if bolum=="5":
        k2="Başkent olup olmadığını bilmiyorum. Ama öğreneceğim."
        return k2
    if bolum=="6":
        k2=a1+" kaç yaşında bilmiyorum. Ama Öğreneceğim."
        return k2
    if bolum=="7":
        k2="Öldü mü?"
        return k2
    if bolum=="w":
        k2="Kim söylemiş bilmiyorum."
        return k2
    if bolum=="m":
        k2="Mevcut bilgilerim ikisi arasında tercih yapamak için yetersiz..."
        return k2
    else:
        k2="Anlamadım. farklı bir şekilde ifade eder misin?"
        bolum="1"
        return k2
    
class MainBoxLayout(BoxLayout):
	def pressed(self):
		self.k2=""
		bolum="1"
		ad1="Misafir"
		a2="SanalSohbet: "
		c,c1,c2,bag1,bag2,bag3=0,0,0,0,0,0
		
		a=True
		while a:
			ad=ad1+": "
			cevap=0
			a=False
			a1=self.ids.konus.text
			Soru_ilk_hali=self.ids.konus.text
			a1=a1.lower()                     # kelimeler küçük harfe çevriliyor
			a1=a1+bolum                       # sorulan soru ile bölüm bilgisi birleştiriliyor.
			c1+=1

			if analiz(a1)!=None:
				self.k2=analiz(a1)
				bd,a1=yuz_ifadem(analiz(a1))
				self.k2=a1
				self.ids.lokum.source = bd
				cevap+=1
			else:
				self.k2=cevapsiz(a1,bolum)
				tum_konusma.append("M:"+a1)
				cevap+=1
				#posta(a1)

		self.ids.konus.text = ""
		
		self.bot1 = Label(text="Lokum:",
                                color =(0, 0, 0, 1),
                                padding= (10,10),
                                #border_size=5,
                                size_hint = (None,None),
                                height=20,
                                width=en1-5,
                                font_size= 15,
                                #pos_hint = {"x":0.01, "y":0.01},
                                halign = "left",
                                disabled = False,
                                valign = "middle",
                                text_size =self.size)
		
		self.bot = Label(text=self.k2,   #PROGRAMIN CÜMLESİ BURADA 
                                color =(0, 0, 0, 1),
                                padding= (20,10),
                                #border_size=5,
                                size_hint = (None,None),
                                height=satir_say(self.k2),
                                width=en1-5,
                                font_size= 15,
                                #pos_hint = {"x":0.01, "y":0.01},
                                halign = "left",
                                disabled = False,
                                valign = "middle",
                                text_size =self.size)

		self.sen = Label(text="Sen: "+Soru_ilk_hali,     #KULLANICININ YAZDIĞI CÜMLE BURADA
                               color =(1, 1, 1, 1),
                               padding= (10,10),
                               size_hint = (None,None),
                               height=59,
                               width=en1-5,
                               outline_color=(1,0,1),
                               outline_width= 1,     
                               font_size= 15,
                               pos_hint = {"x":0.03, "y":0.01},
                               #halign = "left",
                               valign = "middle",
                               disabled = False,
                               text_size = self.size)

		self.ids.layout.add_widget(self.sen)
		self.ids.layout.add_widget(self.bot1)
		self.ids.layout.add_widget(self.bot)
		
class MyApp(App):
	def build(self):
		return MainBoxLayout()

MyApp().run()

ekran kaydırmayı da sen yapmıştın belki hatırlarsın. kullanıcıdan aldığım cümleyi ekrana yazdırıyorum sonra ben cümlemi ekranan yazdırıyorum. label şeklinde.

App sınıfın içindeki sen adlı metot yardımıyla yapılıyor

1 Beğeni