在 python 中,如何在点击事件上调用带参数的函数
In python, how to call a function with an argument on a click event
我创建了下面的代码,但是当我点击 click me
按钮时,我收到以下错误消息:
TypeError: 'mpfr' object is not callable
有人知道代码有什么问题吗?
import gmpy2 as g
from ipywidgets import widgets
from IPython.display import display
button = widgets.Button(description="Click Me!")
display(button)
max_precision = g.get_max_precision()
pi = g.const_pi()
g.set_context(g.context())
def set_bits_precision(decimal_precision):
bits_precision = int(decimal_precision/g.log(2))
if (bits_precision > max_precision): bits_precision = max_precision
ctx = g.get_context()
ctx.precision = bits_precision
return
def square_root(number):
return g.sqrt(number)
def circle_perimeter(radius):
return 2*pi*radius
def on_button_clicked(x):
return square_root(x)
set_bits_precision(10)
print(pi)
button.on_click(on_button_clicked(2))
button.on_click
必须要有回调函数。您传递使用参数 2 计算的 on_button_clicked
的 result(因此,字面意思是 2 的平方根)而不是传递函数。您可以通过将最后一行代码替换为:
来使用部分函数评估来执行您想要的操作
import functools
button.on_click(functools.partial(on_button_clicked, 2))
我创建了下面的代码,但是当我点击 click me
按钮时,我收到以下错误消息:
TypeError: 'mpfr' object is not callable
有人知道代码有什么问题吗?
import gmpy2 as g
from ipywidgets import widgets
from IPython.display import display
button = widgets.Button(description="Click Me!")
display(button)
max_precision = g.get_max_precision()
pi = g.const_pi()
g.set_context(g.context())
def set_bits_precision(decimal_precision):
bits_precision = int(decimal_precision/g.log(2))
if (bits_precision > max_precision): bits_precision = max_precision
ctx = g.get_context()
ctx.precision = bits_precision
return
def square_root(number):
return g.sqrt(number)
def circle_perimeter(radius):
return 2*pi*radius
def on_button_clicked(x):
return square_root(x)
set_bits_precision(10)
print(pi)
button.on_click(on_button_clicked(2))
button.on_click
必须要有回调函数。您传递使用参数 2 计算的 on_button_clicked
的 result(因此,字面意思是 2 的平方根)而不是传递函数。您可以通过将最后一行代码替换为:
import functools
button.on_click(functools.partial(on_button_clicked, 2))