RuntimeError:这个事件循环已经在运行.当我在jupyter中运行代码时,就会发生这种情况



我试图在我的代码中实现这个逻辑,但总是有一个错误的RuntimeError:这个事件循环已经在运行"当我在jupyter中运行代码时会发生这种情况,但在Visual Studio code中没有问题。知道怎么解吗?

from prompt_toolkit import prompt
from prompt_toolkit.completion import WordCompleter
#Dictionary of fruits and prices:
fruits = {
"apple": 2.5,
"orange": 3.0,
"pinapple": 5.0,
"banana": 1.5,
"kiwi": 4.0,
"mango": 6.0
}
#Complete fruits:
fruits_completer = WordCompleter(list(fruits.keys()))
#Ask user for the name of the fruit:
fruits= prompt("Type the name of the fruit: ", completer=fruits_completer)
#Show the price of the choosen fruit:
price = fruits.get(fruit)
if price:
print(f"The price of the {fruit} is: {price}")
else:
print("The fruit is not in the list")

这应该发生当我运行时,它告诉我输入水果的名字然后如果我输入app,它会显示苹果作为一个选项,然后如果我选择它(然后按回车键)它应该显示出那个水果的价格

Type the name of the fruit: app
Type the name of the fruit: apple
The price is: 2.5

基于这里和你的代码,一个选项:

import ipywidgets as widgets
from ipywidgets import interactive
fruits = { "apple": 2.5, "orange": 3.0, "pinapple": 5.0, "banana": 1.5, "kiwi": 4.0, "mango": 6.0 }
drop1 = widgets.Dropdown(options=fruits.keys(), value='apple', description='Fruit:', disabled=False)
def update_dropdown(fruit):
info = (f"The price of the {fruit} is: {fruits[fruit]}")
print(info)  

w = interactive(update_dropdown, fruit=drop1) 
display(w)

在您的机器上不首先安装ipywidgets的情况下尝试此代码的地方,请转到这里并单击"launch binder"。在会话开始和笔记本出现时粘贴上面的代码块。然后运行代码并更改下拉菜单以选择不同的水果。


添加自动完成

这里有一个简单的自动完成示例。你只要把autoFill.py和你的笔记本放在同一个目录里。(如果你添加autoFill.py,这将在我上面提到的相同会话中工作。)然后尝试:

import autoFill as af
from ipywidgets import HTML, HBox
def open(value):
show.value=f"The price of the {value.new} is: {fruits[value.new]}"

options = ['Football', 'Basketball', 'Voleyball', 'Basketcase', 'Showcase', 'Footer', 'Header', 'Viewer', 'Footage', 'Showtime', 'Show Business']
fruits = { "apple": 2.5, "orange": 3.0, "pinapple": 5.0, "banana": 1.5, "kiwi": 4.0, "mango": 6.0 }
autofill = af.autoFill(list(fruits.keys()),callback=open)
show = HTML('Result will be displayed here!')
display(HBox([autofill,show]))

当你开始输入app时,它会让你选择applepinapple[sic]。

或者,这里建议Bokeh有一个autocompleteInput小部件。这段代码对我来说不起作用,但在当前的autocompleteinput示例的变化在这里工作:

from bokeh.io import show
from bokeh.io import output_notebook
from bokeh.models import AutocompleteInput
from bokeh.sampledata.world_cities import data
output_notebook()
completion_list = data["name"].tolist()
auto_complete_input =  AutocompleteInput(title="Enter a city:", completions=completion_list)
show(auto_complete_input)

在它上面的单元格中运行以下代码后:

%pip install bokeh
import bokeh
bokeh.sampledata.download()

虽然在虚化小部件的下面有选择的事实并不是很明显,除非我滚动寻找它们因为下面的空间没有很好地生成。在经典的笔记本和JupyterLab。

显然这需要调整。我只是使用了示例代码,甚至让它工作也不像预期的那么简单。

相关内容

  • 没有找到相关文章

最新更新