arthropod_describer package

Subpackages

Submodules

arthropod_describer.app module

class ArthropodDescriber[source]

Bases: QMainWindow

clear_multi_selection()[source]

Deselects everything except the photo that was selected first.

clear_selection()[source]
closeEvent(self, event: PySide2.QtGui.QCloseEvent)[source]
close_photo_tags_widget(_: QModelIndex)[source]
compute_regions3(reg_comp: RegionComputation, process_mode: ProcessType)[source]
copying_finished = <PySide2.QtCore.Signal object>
dispose_of_general_action_settings(widget: QWidget)[source]
enable_actionSave()[source]
execute_general_action(action: GeneralAction, widget: Optional[QWidget] = None)[source]
execute_general_action_or_show_settings(qaction: QAction)[source]

Executes a GeneralAction or shows a setting dialog if the given action provides some user parameters.

Parameters

qaction (QAction) – The action that was triggered by the user.

Returns

Nothing

Return type

None

exit_application()[source]
fetch_first_photo()[source]
fetch_last_photo()[source]
fetch_next_photo()[source]
fetch_photo(idx: int)[source]
fetch_prev_photo()[source]
handle_action_import_folder_triggered(checked: bool)[source]
handle_action_import_photos_triggered()[source]
handle_action_open_project_triggered()[source]
handle_copying_finished()[source]
handle_current_changed(current: QModelIndex, previous: QModelIndex)[source]
handle_delete_photo_requested(photo: Photo)[source]
handle_focus_changed(old: QWidget, new: QWidget)[source]
handle_image_list_slider_released()[source]
handle_new_tag_added(photo: Photo, tag: str)[source]
handle_resize_requested(photo: Photo)[source]
handle_resolution_setting_requested(photo: Photo)[source]
handle_rotation_requested(photo: Photo, clockwise: bool)[source]
handle_selection_changed(selected: QItemSelection, deselected: QItemSelection)[source]
handle_storage_updated(data: Dict[str, Any])[source]
handle_tag_filter_changed(filter_index: int)[source]
handle_tag_widget_left()[source]
handle_tags_filter_changed(active_tags: List[str])[source]
handle_thumbnail_gui_rotate_request(widget: ThumbGUI, im_op: ImageOperation)[source]
hide_thumb_gui()[source]
include_photos(temp_storage: TempStorage)[source]
load_config()[source]
open_project(folder: Path, temp_storage: Optional[TempStorage])[source]
open_project_folder_in_explorer()[source]
repopulate_tags_combobox()[source]
save_config()[source]
save_project()[source]
set_storage(storage: Storage)[source]
show_label_info(label: int)[source]
show_photo(photo: Photo)[source]
show_tag_ui(index: QModelIndex)[source]
show_thumbnail_gui(index: QModelIndex)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
switch_to_label_editor()[source]
switch_to_scale_setting()[source]
toggle_label_info_visible(visible: bool)[source]
update_applyToUnsegmented_state()[source]
run_reg_comp_on_storage(reg_comp: RegionComputation, storage: Storage, progress_queue: Queue, send_photo: bool = True)[source]

arthropod_describer.color_tolerance_dialog module

class ColorToleranceDialog(state: ~arthropod_describer.common.state.State, parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: QDialog

accept(self)[source]
get_color_and_tolerances()[source]
reject(self)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>

arthropod_describer.custom_graphics_view module

class CustomGraphicsView(state: State, parent: Optional[QWidget] = None)[source]

Bases: QGraphicsView

double_shift = <PySide2.QtCore.Signal object>
escape_pressed = <PySide2.QtCore.Signal object>
keyPressEvent(self, event: PySide2.QtGui.QKeyEvent)[source]
keyReleaseEvent(self, event: PySide2.QtGui.QKeyEvent)[source]
mouseMoveEvent(self, event: PySide2.QtGui.QMouseEvent)[source]
mousePressEvent(self, event: PySide2.QtGui.QMouseEvent)[source]
mouseReleaseEvent(self, event: PySide2.QtGui.QMouseEvent)[source]
mouse_move = <PySide2.QtCore.Signal object>
resizeEvent(self, event: PySide2.QtGui.QResizeEvent)[source]
rubber_band_started = <PySide2.QtCore.Signal object>
space_pressed = <PySide2.QtCore.Signal object>
staticMetaObject = <PySide2.QtCore.QMetaObject object>
tab_pressed = <PySide2.QtCore.Signal object>
view_changed = <PySide2.QtCore.Signal object>
view_dragging = <PySide2.QtCore.Signal object>
wheelEvent(self, event: PySide2.QtGui.QWheelEvent)[source]

arthropod_describer.dbg_utils module

class MockStorage(folder: Path, image_regex: Pattern = re.compile('.*\\.tif'))[source]

Bases: LocalStorage

classmethod create() MockStorage[source]
destroy()[source]
classmethod load_from(folder: Path, image_regex: Pattern = re.compile('.*\\.tif')) MockStorage[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>

arthropod_describer.image_controls module

class ImageControls(parent: Optional[QWidget] = None, f: Optional[WindowFlags] = None)[source]

Bases: QWidget

staticMetaObject = <PySide2.QtCore.QMetaObject object>

arthropod_describer.image_list_delegate module

class ImageListDelegate(thumbnail_storage: ThumbnailStorage_, parent: Optional[QObject] = None)[source]

Bases: ThumbnailDelegate

paint(self, painter: PySide2.QtGui.QPainter, option: PySide2.QtWidgets.QStyleOptionViewItem, index: PySide2.QtCore.QModelIndex)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
tag_rects = {}
tags_rect = PySide2.QtCore.QRect(0, 0, 0, 0)
class ImageListView(parent: Optional[QWidget] = Ellipsis)[source]

Bases: QListView

hide_tag_ui = <PySide2.QtCore.Signal object>
initialize(delegate: ImageListDelegate)[source]
leaveEvent(self, event: PySide2.QtCore.QEvent)[source]
mouseMoveEvent(self, e: PySide2.QtGui.QMouseEvent)[source]
mousePressEvent(self, event: PySide2.QtGui.QMouseEvent)[source]
show_tag_ui = <PySide2.QtCore.Signal object>
staticMetaObject = <PySide2.QtCore.QMetaObject object>
view_left = <PySide2.QtCore.Signal object>

arthropod_describer.image_list_model module

class ImageListModel(parent: Optional[QWidget] = None)[source]

Bases: QAbstractListModel

columnCount(self, parent: PySide2.QtCore.QModelIndex) int[source]
data(self, index: PySide2.QtCore.QModelIndex, role: int = PySide2.QtCore.Qt.ItemDataRole.DisplayRole) Any[source]
handle_approval_changed(photo: Photo)[source]
handle_slider_pressed()[source]
handle_slider_released(first_index: QModelIndex, last_index: QModelIndex)[source]
handle_thumbnails_loaded(indices: List[int])[source]
highlight_indexes(idxs: List[int])[source]
initialize(image_paths: List[Path], thumbnail_storage: ThumbnailStorage_, processed_count: int, storage: Storage) bool[source]
rowCount(self, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) int[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class ImageListSortFilterProxyModel(state: State, parent: Optional[QObject] = None)[source]

Bases: QSortFilterProxyModel

filterAcceptsRow(self, source_row: int, source_parent: PySide2.QtCore.QModelIndex) bool[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>

arthropod_describer.image_viewer module

class ImageViewer(state: ~arthropod_describer.common.state.State, mode: ~arthropod_describer.image_viewer.ViewerMode = ViewerMode.Combined, parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: QWidget

add_layer(layer: Layer)[source]
enable_first_button(enable: bool = True)[source]
enable_last_button(enable: bool = True)[source]
enable_navigation_buttons(idx: int, current_photo_count: int = -1)[source]
enable_next_button(enable: bool = True)[source]
enable_prev_button(enable: bool = True)[source]
first_photo_requested = <PySide2.QtCore.Signal object>
handle_zoom_selected(value)[source]
last_photo_requested = <PySide2.QtCore.Signal object>
next_photo_requested = <PySide2.QtCore.Signal object>
photo_switched = <PySide2.QtCore.Signal object>
prev_photo_requested = <PySide2.QtCore.Signal object>
rotate_ccw_requested = <PySide2.QtCore.Signal object>
rotate_cw_requested = <PySide2.QtCore.Signal object>
set_photo(photo: Optional[Photo], reset_view: bool = False, reset_tool: bool = True)[source]
set_storage(storage: Optional[Storage])[source]
set_tool(tool: Optional[Tool], reset_current: bool = True)[source]
show_whole_image()[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class ViewerMode(value)[source]

Bases: IntEnum

An enumeration.

Combined = 1
OnlyPhoto = 0

arthropod_describer.import_dialog module

class AssignedLabelImageItemDelegate(model: QAbstractItemModel, parent: Optional[QObject] = None)[source]

Bases: QStyledItemDelegate

createEditor(self, parent: PySide2.QtWidgets.QWidget, option: PySide2.QtWidgets.QStyleOptionViewItem, index: PySide2.QtCore.QModelIndex) PySide2.QtWidgets.QWidget[source]
setEditorData(self, editor: PySide2.QtWidgets.QWidget, index: PySide2.QtCore.QModelIndex)[source]
setModelData(self, editor: PySide2.QtWidgets.QWidget, model: PySide2.QtCore.QAbstractItemModel, index: PySide2.QtCore.QModelIndex)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class ImageImportTableModel(parent: Optional[QObject] = None)[source]

Bases: QAbstractTableModel

columnCount(self, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) int[source]
data(self, index: PySide2.QtCore.QModelIndex, role: int = PySide2.QtCore.Qt.ItemDataRole.DisplayRole) Any[source]
disable_import_chkBoxes()[source]
enable_import_chkBoxes()[source]
flags(self, index: PySide2.QtCore.QModelIndex) PySide2.QtCore.Qt.ItemFlags[source]
headerData(self, section: int, orientation: PySide2.QtCore.Qt.Orientation, role: int = PySide2.QtCore.Qt.ItemDataRole.DisplayRole) Any[source]
import_status_changed = <PySide2.QtCore.Signal object>
rowCount(self, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) int[source]
setData(self, index: PySide2.QtCore.QModelIndex, value: Any, role: int = PySide2.QtCore.Qt.ItemDataRole.EditRole) bool[source]
set_storage(storage: TempStorage)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class ImportAction(value)[source]

Bases: IntEnum

An enumeration.

CreateProject = 1
ImportPhotos = 0
class ImportDialog(parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: QDialog

closeEvent(self, arg__1: PySide2.QtGui.QCloseEvent)[source]
copying_finished = <PySide2.QtCore.Signal object>
handle_assign_global_tag_toggled(checked: bool)[source]
handle_double_click_on_table(index: QModelIndex)[source]
handle_focus_changed(old, now)[source]
handle_global_tag_changed(tag: str)[source]
handle_infer_tags_toggled(checked: bool)[source]
import_btn_clicked = <PySide2.QtCore.Signal object>
import_folder(in_path: Path, out_path: Path)[source]
import_photos = <PySide2.QtCore.Signal object>
open_for_creating_project()[source]
open_for_importing(project_folder: Path, project_name: str)[source]
open_project = <PySide2.QtCore.Signal object>
reject(self)[source]
set_label_image_assignments(lbl_img_assignments: List[Tuple[str, str, bool]])[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
toggle_max_height_constraint(state: <class 'PySide2.QtCore.Qt.CheckState'>)[source]
update_lbl_project_dest()[source]
update_max_height_constraint(value: int)[source]
create_table_widget_row(name: str, label_type: Union[str, int, LabelImgType], assigned: bool) List[QTableWidgetItem][source]
mp_recognize_scales(img_paths: List[str], result_queue: Queue, ev: Event)[source]

arthropod_describer.import_utils module

class ImportPhotoInfo(src_size: typing.Tuple[int, int], dst_size: typing.Tuple[int, int], src_path: pathlib.Path, dst_path: pathlib.Path, relative_path: pathlib.Path, resize_factor: float = 1.0, max_resize_factor: float = 1.0, scale_info: arthropod_describer.common.utils.ScaleSetting = <factory>, original_scale_info: arthropod_describer.common.utils.ScaleSetting = <factory>, temp_folder: pathlib.Path = <factory>, rotation: int = 0, scale_marker: typing.Union[PySide2.QtGui.QImage, NoneType] = None, include: bool = True)[source]

Bases: object

dst_path: Path
dst_size: Tuple[int, int]
include: bool = True
max_resize_factor: float = 1.0
original_scale_info: ScaleSetting
relative_path: Path
resize_factor: float = 1.0
rotation: int = 0
scale_info: ScaleSetting
scale_marker: Optional[QImage] = None
src_path: Path
src_size: Tuple[int, int]
temp_folder: Path
class TempPhoto(folder: Path, img_name: str, subs: Subscriber, import_info: Optional[ImportPhotoInfo] = None)[source]

Bases: LocalPhoto

property image_path: Path
property image_scale: Optional[Value]
resize(factor: float)[source]
rotate(ccw: bool)[source]
property scale_setting: Optional[ScaleSetting]
property tags: Set[str]
class TempStorage(image_paths: List[Path], root_folder: Path, max_size: int = 0, parent: Optional[QObject] = None)[source]

Bases: Storage

PxPerCm

alias of int

close_storage()[source]
property default_label_image: str
get_photo_by_idx(idx: int, load_image: bool = True) TempPhoto[source]
get_photo_by_name(name: str, load_image: bool = True) TempPhoto[source]
property image_count: int
property image_names: List[str]
property image_paths: List[Path]
property images: List[Photo]
is_approved(index: int) bool[source]
property label_img_info: Dict[str, LabelImgInfo]
property location: Path
property photos_to_import: List[TempPhoto]
set_max_size(max_size: int)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
property storage_name: str

arthropod_describer.plugin_manager module

class PluginListModel(parent: Optional[QObject] = None)[source]

Bases: QAbstractItemModel

columnCount(self, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) int[source]
data(self, index: PySide2.QtCore.QModelIndex, role: int = PySide2.QtCore.Qt.ItemDataRole.DisplayRole) Any[source]
index(self, row: int, column: int, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) PySide2.QtCore.QModelIndex[source]
parent(self) PySide2.QtCore.QObject[source]
parent(self, child: PySide2.QtCore.QModelIndex) PySide2.QtCore.QModelIndex
property plugin_list: List[Plugin]
rowCount(self, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) int[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class PluginManager(state: State, parent: Optional[QWidget] = None)[source]

Bases: QWidget

apply_property_computation = <PySide2.QtCore.Signal object>
apply_region_computation = <PySide2.QtCore.Signal object>
property current_plugin: Plugin
handle_apply_all_clicked(chkd: bool)[source]
handle_apply_clicked(chkd: bool)[source]
set_show_prop_computation(prop_comp: PropertyComputation)[source]
set_show_region_computation(reg_comp: RegionComputation)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class ProcessType(value)[source]

Bases: IntEnum

An enumeration.

ALL_PHOTOS = 1
ALL_UNSEGMENTED = 2
SELECTED_PHOTOS = 0
class RegionCompsListModel(parent: Optional[QObject] = None)[source]

Bases: QAbstractItemModel

add_computation(comp: Union[RegionComputation, PropertyComputation])[source]
columnCount(self, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) int[source]
property comps_list: Union[List[RegionComputation], List[PropertyComputation]]
data(self, index: PySide2.QtCore.QModelIndex, role: int = PySide2.QtCore.Qt.ItemDataRole.DisplayRole) Any[source]
index(self, row: int, column: int, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) PySide2.QtCore.QModelIndex[source]
parent(self) PySide2.QtCore.QObject[source]
parent(self, child: PySide2.QtCore.QModelIndex) PySide2.QtCore.QModelIndex
rowCount(self, parent: PySide2.QtCore.QModelIndex = Invalid(PySide2.QtCore.QModelIndex)) int[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
get_plugin_folder_paths() List[Path][source]
is_computation(obj) bool[source]
load_computations(comp_folder: Path) Union[List[RegionComputation], List[PropertyComputation], List[GeneralAction]][source]
load_plugin(plugin_folder: Path) Optional[Plugin][source]

arthropod_describer.resources module

arthropod_describer.tag_filter_widget module

class ActiveTagsList[source]

Bases: QLineEdit

enterEvent(self, event: PySide2.QtCore.QEvent)[source]
hovered = <PySide2.QtCore.Signal object>
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class TagFilterWidget(state: ~arthropod_describer.common.state.State, parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: QWidget

enterEvent(self, event: PySide2.QtCore.QEvent)[source]
handle_active_tags_changed(active_tags: List[str])[source]
handle_storage_update(_: Dict[str, Any])[source]
handle_tags_filter_changed(_: List[str])[source]
initialize()[source]
leaveEvent(self, event: PySide2.QtCore.QEvent)[source]
show_tags_panel_popup()[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>

arthropod_describer.tags_widget module

class PhotoTagsWidget(photo: ~arthropod_describer.common.photo.Photo, state: ~arthropod_describer.common.state.State, parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: TagsWidget

handle_photo_update(image_name: str, ctx: UpdateContext, data: Dict[str, Any])[source]
populate()[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class TagLine(tag: str, enabled: bool = True, parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: QWidget

staticMetaObject = <PySide2.QtCore.QMetaObject object>
tag_assign_global = <PySide2.QtCore.Signal object>
tag_delete_request = <PySide2.QtCore.Signal object>
tag_toggled = <PySide2.QtCore.Signal object>
class TagsWidget(state: ~arthropod_describer.common.state.State, title: str = 'Photo tags', parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: QDialog

clear_tags()[source]
enterEvent(self, event: PySide2.QtCore.QEvent)[source]
leaveEvent(self, event: PySide2.QtCore.QEvent)[source]
populate()[source]
show(self)[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
update_tag_states()[source]
widget_left = <PySide2.QtCore.Signal object>

arthropod_describer.thumbnail_gui module

class ThumbGUI(photo: ~arthropod_describer.common.photo.Photo, parent: ~typing.Optional[~PySide2.QtWidgets.QWidget] = None, f: ~PySide2.QtCore.Qt.WindowFlags = <PySide2.QtCore.Qt.WindowFlags object>)[source]

Bases: QWidget

ccw_icon = None
cw_icon = None
delete_icon = None
delete_photo_requested = <PySide2.QtCore.Signal object>
resize_icon = None
resize_requested = <PySide2.QtCore.Signal object>
resolution_icon = None
resolution_setting_requested = <PySide2.QtCore.Signal object>
rotate_requested = <PySide2.QtCore.Signal object>
save_photo = <PySide2.QtCore.Signal object>
staticMetaObject = <PySide2.QtCore.QMetaObject object>
handler(signal: Signal, *args)[source]

arthropod_describer.thumbnail_storage module

class ThumbnailDelegate(thumbnails: ThumbnailStorage_, parent: Optional[QObject] = None)[source]

Bases: QStyledItemDelegate

paint(self, painter: PySide2.QtGui.QPainter, option: PySide2.QtWidgets.QStyleOptionViewItem, index: PySide2.QtCore.QModelIndex)[source]
sizeHint(self, option: PySide2.QtWidgets.QStyleOptionViewItem, index: PySide2.QtCore.QModelIndex) PySide2.QtCore.QSize[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
class ThumbnailStorage_(storage: Storage, thumbnail_size: Tuple[int, int] = (248, 128), parent: Optional[QObject] = None)[source]

Bases: Storage

delete_photo(img_name: str, parent: QWidget) bool[source]
get_photo_by_idx(idx: int, load_image: bool = True) Photo[source]
get_photo_by_name(name: str, load_image: bool = True) Photo[source]
property image_count: int
property image_names: List[str]
property image_paths: List[str]
property images: List[Photo]
include_photos(photo_names: List[str], scale: Optional[int])[source]
classmethod load_from(folder: Path, image_regex: Pattern = re.compile('.*\\.(png|PNG|tiff|TIFF|tif|TIF|jpg|JPG|jpeg|JPEG)$')) Optional[ThumbnailStorage_][source]
property location: Path
save() bool[source]
staticMetaObject = <PySide2.QtCore.QMetaObject object>
property storage_name: str

arthropod_describer.ui_arthropod_describer module

class Ui_ArhtropodDescriber[source]

Bases: object

retranslateUi(ArhtropodDescriber)[source]
setupUi(ArhtropodDescriber)[source]

arthropod_describer.ui_color_tolerance_dialog module

class Ui_ColorToleranceDialog[source]

Bases: object

retranslateUi(ColorToleranceDialog)[source]
setupUi(ColorToleranceDialog)[source]

arthropod_describer.ui_image_controls module

class Ui_ImageControls[source]

Bases: object

retranslateUi(ImageControls)[source]
setupUi(ImageControls)[source]

arthropod_describer.ui_image_viewer module

class Ui_ImageViewer[source]

Bases: object

retranslateUi(ImageViewer)[source]
setupUi(ImageViewer)[source]

arthropod_describer.ui_import_dialog module

class Ui_ImportDialog[source]

Bases: object

retranslateUi(ImportDialog)[source]
setupUi(ImportDialog)[source]

arthropod_describer.ui_plugins_widget module

class Ui_PluginsWidget[source]

Bases: object

retranslateUi(PluginsWidget)[source]
setupUi(PluginsWidget)[source]

arthropod_describer.ui_progress_dialog module

class Ui_ProgressDialog[source]

Bases: object

retranslateUi(ProgressDialog)[source]
setupUi(ProgressDialog)[source]

arthropod_describer.ui_thumbnail_gui module

class Ui_ThumbnailGUI[source]

Bases: object

retranslateUi(ThumbnailGUI)[source]
setupUi(ThumbnailGUI)[source]

Module contents