You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm中Jupyter Notebook的ipywidgets Dropdown组件无法展开显示选项的问题求助及解决记录

PyCharm中Jupyter Notebook的ipywidgets Dropdown组件无法展开显示选项的问题求助及解决记录

最近我遇到了个挺闹心的小问题,在PyCharm里运行带ipywidgets Dropdown组件的Jupyter Notebook时,下拉菜单没法像正常情况那样展开显示选项——只能看到当前选中的第一个值,点击后只有蓝色选中框提示,得靠键盘方向键切换选择,完全看不到下拉列表选项。不过图表倒是能根据选中的值正常更新,下面是我的整个排查和解决过程:

问题复现场景

  • 我是想测试一段结合ipywidgets和matplotlib的代码,实现通过下拉选择年份来动态更新飞行时长图表的功能
  • 运行环境:PyCharm内置的Jupyter Notebook,依赖库包括ipywidgets、matplotlib(启用了%matplotlib widget后端)
  • 异常表现:Dropdown组件仅显示当前选中值,无法展开下拉列表查看所有可选年份,但图表更新逻辑完全正常

我用到的测试代码

%matplotlib widget  # 需要ipympl库支持
import ipywidgets as widgets
from IPython.display import display
import matplotlib.pyplot as plt

# 创建年份下拉选择框
dropdown = widgets.Dropdown(
    options=list(range(2009, 2020)),  # 2009到2019的整数选项
    value=2009,  # 默认选中2009
    description='Jahr:',
)

# 初始化matplotlib图表
fig, ax = plt.subplots()
fig.dpi = 150
x = [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
y = [130, 137, 104, 147, 401, 274, 234, 770, 857, 746, 704]
line, = ax.plot(x, y, label="Flugstunden pro Jahr", marker=".")
ax.legend()
ax.set_title("Flugstunden")
ax.set_xlabel("Jahr")
ax.set_ylabel("Flugstunden")
ax.set_facecolor((0.9,0.9,0.9))

# 定义下拉框值变化的回调函数(方式1:移除旧线条重新绘制)
def on_change1(value=2009):
    """下拉框值变化时,移除旧线条并绘制选中年份的数据点"""
    # 获取选中年份在x列表中的位置
    pos = x.index(value)
    selected_x = x[pos]
    selected_y = y[pos]
    print('选中年份:', selected_x)
    print('对应飞行时长:', selected_y)
    
    # 移除轴上所有旧线条
    for l in ax.lines:
        l.remove()
    # 绘制新的数据点
    ax.plot(selected_x, selected_y, label="Flugstunden pro Jahr", marker=".")

# 绑定下拉框与回调函数
widgets.interact(on_change1, value=dropdown)

排查与验证过程

  1. 首先我把这段代码放到binder在线环境中运行,Dropdown组件完全正常,点击就能展开看到所有年份选项
  2. 接着我把同一个Notebook文件导出后,在本地的Jupyter Lab中打开运行,下拉菜单也能正常展开
  3. 这说明代码本身没有问题,问题肯定出在PyCharm IDE对Jupyter Notebook中ipywidgets组件的支持上

最终解决方法

我突然想起自己已经有半年没更新PyCharm了,于是尝试了以下步骤:

  1. 打开PyCharm的设置,找到「检查更新」选项
  2. 把IDE更新到了最新的2025.1.3版本
  3. 重启PyCharm后重新打开这个Jupyter Notebook并运行
  4. 神奇的事情发生了!Dropdown组件完全正常工作,点击后就能展开看到所有2009-2019的年份选项,和在Jupyter Lab里的表现一模一样!

小提示

如果大家在PyCharm中使用Jupyter Notebook时遇到ipywidgets组件表现异常的情况,优先试试更新到最新的PyCharm版本——很多时候都是旧版本IDE对widgets的渲染支持存在bug,更新后就能解决。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 03:13:01