私は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_()