【问题标题】:Best way to show interactive table with python (columns adjustably by user)使用 python 显示交互式表格的最佳方式(用户可调整列)
【发布时间】:2019-01-26 20:17:01
【问题描述】:

使用 python3 显示漂亮的交互式表格 (2d) 有哪些不错的选择? 我希望用户能够对行进行排序(例如,通过单击列标题)、显示/隐藏列等。

理想情况下无需使用(不可调试的)jupyter notebook。

如果我没有错的话,使用 jupyter 笔记本比使用“常规”python 更容易做到这一点。为什么是这样?

如果您设置 %matplotlib inline ,调用类似 pandas.head() 的东西会自动显示正确的 gui 吗?

提前致谢

【问题讨论】:

  • 您是在问关于制作一个 GUI 来显示一些数据?最简单的方法是Tkinter Treeview
  • 您可以在引发异常后在 jupyter notebook 中使用%debug 命令进行调试;您是否考虑过使用ipywidgets.interact 来获取您描述的行为?
  • 如果您使用 Spyde IDE,您可以通过双击变量资源管理器部分中的变量来打开良好的 GUI 界面
  • 检查来自PyQTtable 元素。我想这就是你要找的。​​span>
  • pythonspot.com/pyqt5-table 以及添加 self.tableWidget.setSortingEnabled(True) 行(它可以根据用户单击的列进行排序)似乎提供了最好的起点(如果一个人想至少避免与 jupyter 笔记本绑定)来自 Qt 的 PySide2(blog.qt.io/blog/category/qt-for-python)我肯定也是一个不错的选择,但它没有很好地记录(还),而且 Tkinter 似乎很难安装

标签: python pandas data-visualization


【解决方案1】:

您可以使用plotly,或者如果您对更多交互感兴趣,请使用 Dash DataTable

DataTable 是交互式的。本章演示了表格的交互特性以及如何将这些交互连接到 Python 回调。这些行动包括:

  • 分页
  • 选择行
  • 对列进行排序
  • 过滤数据

【讨论】:

    【解决方案2】:

    使用上面pythonspot 中描述的表格小部件,需要通过创建和插入单独的 QTableWidgetItems 来单独添加每一行数据。例如

      self.tableWidget.setItem(0, 0, QTableWidgetItem("Cell (1,1)"))
    

    在某些情况下这可能就足够了,但它不能很好地概括。

    PandasTableView 是一种更面向 MVC 的方法,它使用 QTableView 和关联的模型 (QAbstractTableModel) 类(在运行时提供数据,例如在读取 cvs 文件后)。它在 stackoverflow,完整代码可以在github找到

    虽然需要更多代码并且更难理解,但它是最灵活的,也是我所寻找的。尤其是因为它展示了如何合并来自 pandas 数据框的数据。

    有各种解决方案(例如QGrid)只能在 Jupyter 笔记本中运行(大概在幕后他们使用 html 表格等,这就是他们需要浏览器/笔记本环境的原因)。

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 2010-11-22
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多