Use Non-main Window Table Viewers¶
Aiming at better extensibility, tabulous
is designed to allow many different types of
integration to external packages.
Use TableViewer in Your Qt Widget¶
If you plan to use a table viewer as a child of another QWidget
, you can use a non-main
window version of it. The native
property returns the Qt backend widget.
from tabulous import TableViewerWidget
from qtpy import QtWidgets as QtW
class MyQWidget(QtW.QMainWindow):
def __init__(self):
super().__init__()
self.table = TableViewerWidget()
self.setCentralWidget(self.table)
Note
A benefit of using tabulous
is that a table widget usually takes too much space but this
problem can be solve by popup view of tables in tabulous
. See View Tables in Different Modes for
more detail.
Note
To avoid conflicting with the main widget, the non-main-window version of table viewer has
some restriction. For instance, embedded console does not open with shortcut Ctrl+Shift+C
so you have to programmatically open it by viewer.console.visible = True
.
Use TableViewer with magicgui¶
If you want to use a magicgui version of it,
you can use MagicTableViewer
. MagicTableViewer`
is a subclass of
TableViewerWidget
and magicgui.widgets.Widget
so it is compatible with
all the magicgui
functionalities.
In following simple example you can load a table data from a file.
from tabulous import MagicTableViewer
from magicgui.widgets import Container, FileEdit
viewer = MagicTableViewer()
file_edit = FileEdit()
file_edit.changed.connect(viewer.open)
container = Container()
container.append(viewer)
container.append(file_edit)
container.show()
MagicTableViewer
can also easily be used with magic-class.
Following example does similar thing as the one above.
from tabulous import MagicTableViewer
from pathlib import Path
from magicclass import magicclass, field
@magicclass
class A:
table_viewer = field(MagicTableViewer)
def load_data(self, path: Path):
self.table_viewer.open(path)
ui = A()
ui.show()
Use Tables in Your Widget¶
All the tables can also be used in other widgets. For instance, following example shows how to use a spreadsheet in your widget.
from tabulous.widgets import SpreadSheet
from qtpy.QtWidgets import QWidget, QVBoxLayout
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.setLayout(QVBoxLayout())
self.layout().addWidget(SpreadSheet().native)
widget = MyWidget()
widget.show()
Table-specific shortcuts, such as copy/paste and undo/redo are available in the table.