0

私はPythonでアプリケーションを書く初心者です。特定の範囲から乱数を生成する単純なアプリケーションに問題があります。エラーなく起動します。2 つの数字を入力して「generuj」(ポーランド語で生成) をクリックすると、アプリケーションが応答しなくなります。エラーはありません。無限ループなどがあるように、フリーズするだけです。なぜそれが起こっているのか、誰か教えてもらえますか?または、少なくとも、その状況からエラーに関する情報を取得する方法を教えてください。コードは次のとおりです。

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from sys import argv
from random import randint

class OknoGeneratora(QDialog):
    def __init__(self):
        super(OknoGeneratora, self).__init__()
        self.setWindowTitle("Generator losowych liczb") #random number generator
        self.setFixedSize(QSize(320,240))

        gm = QVBoxLayout()
        gm.addStretch(1)
        gm.addWidget(QLabel("Podaj początek i koniec zasięgu w jakim mają być generowane liczby (dodatnia i całkowita): ")) #give the range of numbers
        self.__liczba1=QLineEdit()
        self.__liczba2=QLineEdit()
        gm.addWidget(self.__liczba1)
        gm.addWidget(self.__liczba2)
        gm.addStretch(1)

        dm = QHBoxLayout()
        self.__generuj = QPushButton("Generuj") #generate
        dm.addWidget(self.__generuj)
        self.__koniec = QPushButton("Zakończ") #close
        dm.addWidget(self.__koniec)
        gm.addLayout(dm)

        self.__generuj.pressed.connect(self.generuj)
        self.__koniec.pressed.connect(self.koniec)

        self.setLayout(gm)

    def generuj(self):
        sprawdz=0
        if self.__liczba1.text():
            for zn in self.__liczba1.text():
                if not zn.isdigit():
                    sprawdz=1
                    QMessageBox.critical(self, "Błąd", "Zły napis! Proszę podać liczbę.") #Error, Give the number
                    break
        elif self.__liczba2.text():
            for zn2 in self.__liczba2.text():
                if not zn2.isdigit():
                    sprawdz=1
                    QMessageBox.critical(self, "Błąd", "Zły napis! Proszę podać liczbę.") #Error, Give the number
                    break
        if sprawdz!=1:
            li1 = int(self.__liczba1.text())
            li2 = int(self.__liczba2.text())
            wynik=""
            while li1>0 and li2>0:
                wynik=randint(li1,li2)
            QMessageBox.information(self,"Ok!","Wygenerowana liczba to: " + wynik) #Ok, generated number is:
        else: QMessageBox.critical(self,"Błąd","Zły napis! Proszę podać liczbę dodatnią.") #Give the number

    def koniec(self): QCoreApplication.instance().quit()

app = QApplication(argv)
okk = OknoGeneratora()
okk.show()
app.exec_()
4

1 に答える 1