2016-05-11 3 views
-1

Добрый день, я не могу запустить следующий код в PyQt, я новичок и не очень понимаю класс, я ценю коллаборацииPyQT GUI, Lineedit, Игра MasterMind

Видимо проблема в том, как подключиться функция (self.ui.lineEdit_2.returnPressed.connect (self.checkText)

# -*- coding: utf-8 -*- 

import sys 
from mastermind import * 
from PyQt5 import QtWidgets 
import random 
import time 



class Menu_mm(QtWidgets.QDialog): 
    def __init__(self,parent=None): 
     QtWidgets.QWidget.__init__(self,parent) 
     self.ui = Ui_MasterMind() 
     self.ui.setupUi(self) 

     self.ui.comboBox.addItem("Facil") 
     self.ui.comboBox.addItem("Dificil") 
     self.ui.comboBox.addItem("Legendario") 
     self.ui.comboBox.activated.connect(self.num) 
     self.ui.pushButton.clicked.connect(self.Empezar) 
     self.ui.label_14.setVisible(False) 
     self.ui.label_19.setVisible(False) 
     self.ui.label_20.setVisible(False) 
     self.ui.label_15.setVisible(False) 
     self.ui.label_16.setVisible(False) 



    def num(self): 
     x= self.ui.comboBox.currentText() 

     if x == "Facil": 
      self.ui.label_6.setText("3") 
      y=1 
     elif x == "Dificil": 
      self.ui.label_6.setText("4") 
      y=2 
     else: 
      self.ui.label_6.setText("5") 
      y=3 

    def Empezar(self): 
     x = self.ui.comboBox.currentText() 

     if x == "Facil": 
      y = 1 
     elif x == "Dificil": 
      y = 2 
     else: 
      y = 3 

     continuar = 1 

     while continuar == 1: 


      if y == 1: 
       cant_digitos = 3 
      elif y == 2: 
       cant_digitos = 4 
      elif y == 3: 
       cant_digitos = 5 
      print(cant_digitos) 

      #print("cant_digitos") 

      digitos = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9') 
      codigo = '' 

      for i in range(cant_digitos): 
       elegido = random.choice(digitos) 
       while elegido in codigo: 
        elegido = random.choice(digitos) 
       codigo = codigo + elegido 
      print(codigo) 

      global propuesta 
      propuesta = self.ui.lineEdit_2.text() 


      intentos = 1 


      while propuesta != codigo: 
       intentos = intentos + 1 
       aciertos = 0 
       coincidencias = 0 
       for i in range(cant_digitos): 
        if propuesta[i] == codigo[i]: 
         aciertos = aciertos + 1 
        elif propuesta[i] in codigo: 
         coincidencias = coincidencias + 1 



       propuesta=self.ui.lineEdit_2.text() 

       self.ui.lineEdit_2.returnPressed.connect(self.checkText) 


       print(propuesta) 
       self.ui.label_13.setText(str(propuesta)) 
       self.ui.label_9.setText(str(aciertos)) 
       self.ui.label_11.setText(str(coincidencias)) 

      self.ui.label_14.setVisible(True) 
      self.ui.label_15.setVisible(True) 
      self.ui.label_16.setVisible(True) 



    def checkText(self): 
     propuesta =self.ui.lineEdit_2.Text() 
     print("si") 
     self.ui.lineEdit_2.clear() 


if __name__ == "__main__": 
    app = QtWidgets.QApplication(sys.argv) 
    myapp = Menu_mm() 
    myapp.show() 
    sys.exit(app.exec_()) 
+1

Почему вы не можете запустить его? Предоставьте нам полученную вами ошибку. Btw, пожалуйста, измените название своего вопроса на что-то значимое, которое описывает вашу проблему. –

+0

Я ценю ваше сотрудничество, большая проблема в том, что цикл продолжает работать и не позволит мне вводить новую запись в lineEdit_2. –

+0

Хм, ну это потому, что у вас там бесконечный цикл. 'continuar' установлен в 1 и никогда не менялся. –

ответ

0

Вы не должны поставить connect заявления внутри цикла. Это будет создавать новое соединение для каждой итерации цикла

while continuar == 1: 
    while propuesta != codigo: 
     self.ui.lineEdit_2.returnPressed.connect(self.checkText) 

Возможно, вы захотите установить это соединение в __init__

+0

Я ценю вашу помощь, но проблема в том, что цикл не останавливается на строкеEdit_2, чтобы ввести новую запись. –

Смежные вопросы