我应该在Qt应用程序的result1
和result2
框中添加函数text1
和text2
的返回,当我点击相对按钮时(注意)我使用的所有变量都是全局的:
def result1(a, b):
z = result2(a, c)
return (a*b)/float(z)
def result2(a, c):
return a/float(c)
button1.clicked.connect(setting)
button2.clicked.connect(setting)
def setting():
if c != 0:
text2.setText(result2(a, c))
text1.setText(result1(a, b))
return
不关注函数result1
和result2
(我没有写它们),我们知道返回都是浮点数(我尝试打印它们)。
当我设置框的文本时,它会显示以下错误:
QLineEdit.setText(QString): argument 1 has unexpected type 'NoneType'
所以我尝试使用方法toString
,如下所示:
def setting():
if c != 0:
text2.setText(result2(a, c).toString())
text1.setText(result1(a, b).toString())
return
但是,现在又出现了另一个错误:
'NoneType' object has no attribute 'toString'
为什么函数返回NoneType
?
答案 0 :(得分:1)
只要您确定该函数正在返回浮点数,这听起来就像是在您不想将其设置为QLineEdit中的文本时,您应该能够执行某些操作像:
services.resume.loginTokens
当然,正如您所说,这要求text2和text1是全局的。
我在第一次创建你的QLineEdit时使用全局变量作为你的价值取得了一些成功的另一个选择:
def setting():
if c != 0:
text2.setText(str(result2(a, c)))
text1.setText(str(result1(a, b)))
return
答案 1 :(得分:1)
这对我有用:
from random import choice as rand
def result2(a, b, c, d):
z = (1 + c/100.0)**(1.0/d) - 1
w = (1 + z)**b
return (a*z*w)/(w - 1)
def result1(a, b, d, e):
x, y = 0.0, float(e)/a
while y - x > 0.000001:
j = (x + y)/2
c = 100*((1 + j)**float(d) - 1)
q = result2(a, b, c, d)
x, y = (x, j) if q > c else (j, y)
return 100*((1 + (x + y)/2)**float(d) - 1)
iterate = 1
while iterate<10:
a = rand(range(-10000,10000))
temp = list(range(-10,10))
temp.remove(0)
b = rand(temp)
c = rand(temp)
d = rand(temp)
e = rand(range(-3000,3000))
print(result2(a,b,c,d))
print(result1(a,b,d,e))
iterate += 1
您必须确保限制将导致除以零的变量组合。我所拥有的并不能保证,但是产生除数为零的组合是不太可能的。