我在使用pyqt4时遇到问题: 这是我正在使用的代码,重点是如果在单击pushOk按钮的事件处理程序中,我调用chiedi_numeri(),它不会显示任何形式,而如果我调用chiedi_numeri(),它会说参数3 og QObjectConnect的类型无效。我该怎么解决? 谢谢
class Ui_dialog(object):
def setupUi(self, dialog):
dialog.setObjectName("dialog")
dialog.resize(400, 300)
self.pushOk = QtGui.QPushButton(dialog)
self.pushOk.setGeometry(QtCore.QRect(200, 150, 75, 23))
self.pushOk.setObjectName("pushOk")
self.radioButton = QtGui.QRadioButton(dialog)
self.radioButton.setEnabled(True)
self.radioButton.setGeometry(QtCore.QRect(60, 40, 261, 18))
self.radioButton.setChecked(True)
self.radioButton.setObjectName("radioButton")
self.radioButton_2 = QtGui.QRadioButton(dialog)
self.radioButton_2.setGeometry(QtCore.QRect(60, 70, 281, 18))
self.radioButton_2.setObjectName("radioButton_2")
self.radioButton_3 = QtGui.QRadioButton(dialog)
self.radioButton_3.setGeometry(QtCore.QRect(60, 100, 281, 18))
self.radioButton_3.setObjectName("radioButton_3")
self.labelRisultato = QtGui.QLabel(dialog)
self.labelRisultato.setGeometry(QtCore.QRect(70, 200, 261, 51))
self.labelRisultato.setObjectName("labelRisultato")
self.retranslateUi(dialog)
QtCore.QMetaObject.connectSlotsByName(dialog)
def retranslateUi(self, dialog):
dialog.setWindowTitle(QtGui.QApplication.translate("dialog", "Fibonacci", None, QtGui.QApplication.UnicodeUTF8))
self.pushOk.setText(QtGui.QApplication.translate("dialog", "Ok", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton.setText(QtGui.QApplication.translate("dialog", "Calcola la serie di Fibonacci", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_2.setText(QtGui.QApplication.translate("dialog", "Calcola la serie di Fibonacci in un intervallo", None, QtGui.QApplication.UnicodeUTF8))
self.radioButton_3.setText(QtGui.QApplication.translate("dialog", "Calcola l\'ennesimo elemento della serie di Fibonacci", None, QtGui.QApplication.UnicodeUTF8))
def fibonacci():
a , b = 0, 1
while 1:
a, b = b, a + b
yield a
def chiedi_numeri():
try:
max_ = int(raw_input("Inserisci un numero: "))
if max_ <= 0 :
print "Il numero", max_, "non e' positivo!"
else:
start = 0
for i in fibonacci():
if start > max_:
break
else:
start += 1
if start == max_:
print "Il", max_, "numero della sequenza di Fibonacci e'", i
except ValueError:
print "Non hai inserito un numero!"
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
dialog = QtGui.QDialog()
ui = Ui_dialog()
ui.setupUi(dialog)
app.connect(ui.pushOk, Qt.SIGNAL("clicked()"), chiedi_numeri())
dialog.show()
sys.exit(app.exec_())
将信号连接到python函数时,传递函数对象。换句话说,由于传递的函数没有调用它,因此省略了后面的括号。尝试将该行改为
app.connect(ui.pushOk, Qt.SIGNAL("clicked()"), chiedi_numeri)
你做错的一件事就是:
您希望此函数在单击按钮时运行,而不是在建立连接时运行。为此,请删除
chiedi_numeri
后面的括号:那就应该把你的纽扣接好。
但是,我不知道你说的以下是什么意思:
“形式”是什么意思?你是不是期待着另一个窗口弹出并要求一个号码?目前,程序在启动应用程序的terminal/shell/console窗口中要求输入一个数字。
从PyQt4导入QtCore,QtGui 从PyQt4.QtCore导入* 从PyQt4.QtGui导入*
尝试: _fromUtf8=QtCore.QString.fromUtf8 除了属性错误: _fromUtf8=λs:s
类用户界面对话框(对象): def setupUi(self,对话框): dialog.setObjectName(_fromUtf8(“dialog”)) 对话框。调整大小(600,400) self.pushOk=QtGui.QPushButton(对话框) self.pushOk.setGeometry(QtCore.QRect(200、150、75、23))设置几何图形 self.pushOk.setObjectName(“pushOk”)
类statxqt4(QtGui.QDialog): 定义初始化(自身):
定义斐波那契(自我):
a,b=0,1
而1:
a、 b=b,a+b
产量a
def chiedi_numeri(自我): 尝试: max_u=int(self.ui.lineEdit.text()) 如果最大值=0: self.ui.lineEdit.setText(“Il numero%s non e'positio!”%str(最大值) 其他: 开始=0
对于self中的i.fibonacci():
如果开始>;最大值: 打破 其他: 开始+=1 如果开始==最大值: self.ui.textEdit.setText(“Il%s numero della sequenza di Fibonacci e'”%str(最大值) self.ui.textEdit.append(str(i)) 异常值错误: self.ui.lineEdit.settext(“非hai inserito un numero!”)
如果名称=“主要”: 导入系统 app=QtGui.QApplication(sys.argv)
相关问题 更多 >
编程相关推荐