2016-11-06 15 views
3

GUI 용 Python-3.5 및 Qt Creator를 사용하여 채팅 프로그램을 개발 중입니다.PyQt : QLineEdit에서 값 가져 오기

처음에 을 입력하면을 입력하면 run_chat이라는 첫 번째 기능이 호출됩니다. 여태까지는 그런대로 잘됐다. 그러나 if 문이 참일 때 사용자가 입력 한 다음 값을 가져 와서 다른 함수에서 사용하고 싶습니다.

문이 참일 때 을 입력하면을 입력하면 첫 번째 함수가 다시 호출됩니다.

코드 :

B = cursor.execute('SELECT Respond FROM Welcoming_Engine ORDER BY RANDOM()').fetchone() 

class Ui(QtWidgets.QDialog): 
    def __init__(self): 
     super(Ui, self).__init__() 
     uic.loadUi('chatbotgui.ui', self) 
     self.show() 
     #--------------------------------------------# 
     self.textBrowser.append('المساعد: ' + B[0]) 
     #self.pushButton.clicked.connect(self.run_chat) 
     self.lineEdit.returnPressed.connect(self.run_chat) 
     #--------------------------------------------# 

    def exit(self): 
     H= self.lineEdit.text() 
     self.textBrowser.append('انت: ' + H) 
     classifier1 = nltk.NaiveBayesClassifier.train(t1) 
     test_sent_features = {word.lower(): (word in word_tokenize(H)) for word in all_words1} 
     sent_result= classifier1.classify(test_sent_features) 
     if sent_result == 'Positive': 
      B= cursor.execute('SELECT Respond FROM Goodbye_Engine ORDER BY RANDOM()').fetchone() 
      cursor.execute('DELETE FROM chatting_log') 
      connection.commit() 
      self.textBrowser.append('المساعد: ' + B[0]) 
     else: 
      B= "اسف!! سوف اعمل على تطوير نفسي" 
      self.textBrowser.append('المساعد: ' + B[0]) 

    def run_chat(self): 
     H= self.lineEdit.text() 
     self.textBrowser.append('انت: ' + H) 
     self.lineEdit.clear() 
     if re.search(r'باي|الى اللقاء',H): 
      B ='تقييمك لعملي؟' 
      self.textBrowser.append('المساعد: ' + B) 
      self.lineEdit.returnPressed.connect(self.exit) 
     else: 
      New_H= PreProcess_text(H) 
      self.textBrowser.append('المساعد: ' + New_H) 

if __name__ == '__main__': 

    app = QtWidgets.QApplication(sys.argv) 
    window = Ui() 
    sys.exit(app.exec_()) 

답변

0

당신은 다른 슬롯에 연결하기 전에 먼저 disconnect the signal에있다 : 당신은 그래서 run_chatreturnPressed을 다시 연결,

신호를 연결할 수 있습니다
if re.search(r'باي|الى اللقاء',H): 
    ... 
    self.lineEdit.returnPressed.disconnect(self.run_chat) 
    self.lineEdit.returnPressed.connect(self.exit) 
0

여러 번 이전 연결을 제거하지 않습니다. 그러므로 당신은 명시 적으로 먼저 기존 연결을 제거해야합니다

try: 
     self.lineEdit.returnPressed.disconnect() 
    except TypeError: 
     pass 
    self.lineEdit.returnPressed.connect(self.exit) 

NB를 : 전류 연결이없는 경우 disconnect이 오류가 발생합니다.