2016-04-12 42 views
1

Kişisel bir asistan gibi bir Tkinter GUI oluşturmaya çalışıyorum, ancak ben yumruk engeline düştüm :(GUI'yi güncellediğimde ve speech_recognition ile dinlediğimde, donuyor ve diyor ben ancak nasıl kullanılacağını üzerinde şaşırıp çoklu diş kullanmak gerektiğini anlıyorum! yanıt vermiyor!Python multi-threading ile tkinter

İşte benim kod ve çoklu iş parçacığı kullanarak benim başarısız girişimi bu.

import tkinter as tk 
from subprocess import call as say 
import winsound 
import speech_recognition as sr 
import threading 

def cbc(tex): 

    return lambda : callback(tex) 

def callback(tex): 
    button = "Listen" 

    tex.insert(tk.END, button) 
    tex.see(tk.END)# Scroll if necessary 



def listen(tex): 
    def callback(tex): 
     g = ("Say,,your,,command,,after,,the,,beep") 
     say('espeak '+ g, shell = True) 

     winsound.Beep(1000,500) 


     ltext = 'listening...' 
     tex.insert(tk.END, ltext) 

     r = sr.Recognizer() 

     with sr.Microphone() as source: 
      damand = r.listen(source) 

     damandtxt = (recognizer_google(damand)) 
     tex.insert(tk5.END, damandtxt) 

     tex.see(tk.END) 


    t3 = threading.Thread(target = callback(tex)) 
    t3.daemon = True 
    t3.start() 

top = tk.Tk() 
tex = tk.Text(master=top) 
tex.pack(side=tk.RIGHT) 
bop = tk.Frame() 
bop.pack(side=tk.LEFT) 


tk.Button(bop, text='Listen', command=lambda: listen(tex)).pack() 
tk.Button(bop, text='Exit', command=top.destroy).pack() 

top.mainloop() 

ben sadece doğru şekilde nasıl kullanıldığını bilmem gerek .. Lütfen

ps Ben çoklu iş parçacığı üzerinde tüm belge ve herşeyi okudum ama sadece çalışmıyor: '(

:) önceden Sen yanlış iplik aradığınız

cevap

4

, teşekkür ederiz

t3 = threading.Thread(target = callback(tex)) 

callback(tex), hedef olarak iletmek yerine işlevi çağırıyor. Eğer bu şekilde kullanmak istiyorsanız Böyle iplik kullanarak olmalıdır target = lambda: callback(tex)

kullanmak gerekir: Ayrıca

t3 = threading.Thread(target = callback, args=(tex,)) 

başka not, gerçekten iç içe bu işlevi gerekmez senin Diğer işlev, dışarı taşıyabilirsiniz ve tartışmayı iş parçanıza ilettiğiniz için tex tartışması olacaktır.