파이썬으로 쉽게 채팅 앱

8351 단어 Tkinter파이썬
안녕하세요! 올해에 들어가 qiita의 기사를 계속 작성하고 있었습니다만, 조사한 것이 머리에 들어가고, 해 보는 것이구나라고 생각했습니다. 지금까지 투고한 기사는 8건입니다만, 그 중에서도 특히 많이 투고한 것이 Python 관련의 재료입니다. 올해는 Pycon에 참가하거나, 졸업 연구에도 Python을 사용해, Python에 충분히 잠긴 1년이었습니다(몇 번 Python이라고 말하고 있겠지요(웃음))
그래서 이번에는 그 집대성으로서 파이썬으로 애플리케이션을 만들어 보았으므로 소개합니다.

이번에 만드는 것



이번에는 기계 학습 API를 사용하여 채팅봇 형식의 앱을 만듭니다. 이미지적으로는 L○NE의 린나 짱 없는 것을 만들고 싶습니다.

사용 언어, ​​프레임워크 등


  • python3.6
  • tkinter
  • a3rt

  • 이 안에 있는 「a3rt」란, 올해 리크루트가 릴리스한 기계 학습의 API입니다( 참고 ). 파이썬에서 사용하려면 pya3rt이라는 라이브러리를 사용하십시오. a3rt는 사용하는 서비스에 따라 무료 API 키를 발급해야합니다. 이번에는 talkAPI를 사용합니다.

    작성한 소스 코드


    #-*- coding: utf8 -*-
    import sys
    import tkinter as tk
    import tkinter.messagebox as tkm
    import pya3rt
    
    apikey = "YOUR_API_KEY"
    client = pya3rt.TalkClient(apikey)
    
    root = tk.Tk()
    
    # ウインドウのタイトルを定義する
    root.title(u'Seri')
    
    # ここでウインドウサイズを定義する
    root.geometry('400x300')
    # ボタンが押されたらリストボックスに、Entryの中身を追加
    def addList(text):
        mysay = 'you: ' + text
        print(mysay)
        ListBox1.insert(tk.END, mysay)
        Seri = 'Seri: ' + talk(text)
        Entry1.delete(0, tk.END)
        addRep(Seri)
    
    def addRep(Seri):
        ListBox1.insert(tk.END, Seri)
    
    def talk(say):
        if say == 'end':
            return('ではまた')
        else:
            ans_json = client.talk(say)
            ans = ans_json['results'][0]['reply']
            return(ans)
    
    # ラベルを使って文字を画面上に出す
    Static1 = tk.Label(text=u'▼ Seriに話しかけよう! ▼')
    Static1.pack()
    
    
    # Entryを出現させる
    Entry1 = tk.Entry(width=50)                   # widthプロパティで大きさを変える
    Entry1.insert(tk.END, u'こんにちは')        # 最初から文字を入れておく
    Entry1.pack()
    
    
    # Buttonを設置してみる
    Button1 = tk.Button(text=u'送信', width=50, command=lambda: addList(Entry1.get()))        # 関数に引数を渡す場合は、commandオプションとlambda式を使う
    Button1.pack()
    
    
    # リストボックスを設置してみる
    ListBox1 = tk.Listbox(width=55, height=14)
    ListBox1.pack()
    
    root.mainloop()
    

    실제로 사용해 보았습니다.




    좀처럼 똑같은 대응으로 S ○ ri 같았기 때문에 이름은 Seri로했습니다 (웃음)

    문제점·개량하고 싶은 점



    windows나 Linux에서 실행하면, 일본어 입력은 할 수 있습니다만, Mac 왠지 할 수 없기 때문에 다른 텍스트 파일로 입력한 것을 copipe한다고 하는 귀찮은 작업을 해 동작을 시험하고 있습니다(쓴웃음). 텍스트를 입력한 후에 입력한 텍스트를 먼저 표시되어 그 응답이 나중에 표시되는 L○NE와 같은 느낌으로 하고 싶었습니다만, 텍스트와 응답이 동시에 출력되어 버립니다.
    진짜는【end】라고 입력하면 윈도우를 닫도록(듯이) 하고 싶었습니다만, 시간이 없어 구현할 수 없었습니다…언젠가 또 개량하고 싶습니다.

    좋은 웹페이지 즐겨찾기