我是在 python 中编写应用程序的初学者。我的简单应用程序有问题,它会为给定范围生成随机数。它开始,没有错误。我写了两个数字,单击“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_()