Components

Components are interactable widgets that allows users to configure parameters or see results from your custom widget.

Components are constructed by keyword arguments.

Generic Arguments

Generic arguments apply to all custom componenets. You can provide them as keyword arguments to constructors.

tooltip: str = ''

Text Input

Allows users to input text/number through a single line.

Constructor:

TextInput

Keyword Arguments:

text: str = '5' : Default value of Text Input

place_holder: str = '' : Text to be shown when the Text Input is empty.

Attributes-Methods

text -> str : Receive current text written on Text Input

Example:

class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['text1'] = TextInput(text= '5', 
                                        place_holder='Enter a number', 
                                        tooltip='Defines constant')
    
    def run(self):
        ...
        raw_constant: str = self.param['text1'].text
        constant: int = int(raw_constant)  # casting into integer
        ... 

Drop down lists allows users to choose an option from a provided list of texts.

Constructor:

DropDown

Keyword Arguments:

items: list[str, ...] = ['item1', 'item2', 'item3']: List of texts that are shown on the drop down list.

Attributes-Methods:

selected_item -> str: Returns selected item text. Returns '' if no text available.

selected_index -> int: Returns selected item as integer. Returns 0 if no item is available.

Example:

class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['drop_down'] = DropDown(items=['Method 1, Method 2', 'Method 3'], 
                                        tooltip='Choose Method')
    
    def run(self):
        ...
        raw_constant: int = self.param['drop_down'].selected_index()
        if raw_constant == 0:
            ... 

Label

Labels are simple text based components to statically or dynamically show text on your custom block.

They are also used to provide information about interactable components:

Constructor:

Label

Keyword Arguments:

text: str = '': List of texts that are shown on the drop down list.

Attributes-Methods:

set_text(text: str): Set text of of label.

Example:

class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['label'] = Label(text='Result is: Not Set', 
                                        tooltip='Shows mean value')
    
    def run(self):
        ...
        self.param['label'].set_text(f'Result is: {n}')
        ... 

Slider

Restricts user input to range of numbers.

Constructor:

Slider

Keyword Arguments:

min: int = -5: Minimum value shown on slider..

max: int = 5: Maximum value.

val: int = 3: Initial value.

Attributes-Methods:

value -> int: Current value of slider.

Example:

class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['slider'] = Slider(min=-5, max=5, val=3)
    
    def run(self):
        ...
        threshold: int = self.param['slider'].value
        ... 

Slider Labeled

Same as Slider but adds a label that automatically shows which value is shown in component.

Constructor:

SliderLabeled

Keyword Arguments:

min: int = -5: Minimum value shown on slider..

max: int = 5: Maximum value.

val: int = 3: Initial value.

label: str ="Value": Label text to be shown.

multiplier: float | int = 1: Multiply shown value before addition. Using this with add will allow you show odd numbers if you please.

add: float | int = 0: Added value after multiplication.

Attributes-Methods:

value -> int: Current raw value of slider.

modifiedValue -> int | float: Current modified value of slider.

Example:

class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['threshold_odd'] = SliderLabeled(min= -5, max= 5, val= 3, label="Value", multiplier = 2, add = -1)
    
    def run(self):
        ...
        threshold_odd: int = self.param['threshold_odd'].modifiedValue
        ... 

CheckBox

Allows logic state input.

Constructor:

CheckBox

Keyword Arguments:

text: str = '': Text to be shown beside checkbox.

Attributes-Methods:

is_checked -> str Set text of of label.

Example:

class Example_Block(Block):
    ...
    def init(self):
        ...
        self.param['gray_mode'] = CheckBox(text=': Gray Mode')
    
    def run(self):
        ...
        flag_gray: bool = self.param['gray_mode'].is_checked
        ... 

Button

Triggers an event in your script on mouse click. This component is also very useful for resource management for custom blocks in your scenario.

Constructor:

Button

Keyword Arguments:

text: str = '': Text to be shown beside checkbox.

Attributes-Methods:

set_clicked_callback(callback: Callable): Set callback function to be triggered everytime the button is clicked.

Using set_clickbed_callback is always used in init part of your custom block script.

Example:

...
class Example_Block(Block):
    ...
    file_path: str = ''
    def init(self):
        ...
        self.param['Choose File'] = Button(text= 'Choose File')
        self.param['Choose File'].set_clicked_callback(load_image)
    
    def load_image(self):
        path = QAFileDialog.getOpenFileName(caption='Load Image', 
                                        directory='C:/Images', 
                                        filter='Image Files (*.png *.jpg *.bmp)')
        self.file_path = self.register_resource('image-path', path)
        
    def run(self):
        image_path = self.get_resource('image-path')
    

Example above utilizes callbacks using register_resource and get_resource.

Image

Constructor:

Image

Keyword Arguments:

fixed_width: int = 80: Image height, best to be used with Block.width

fixed_height: int = 80: Image width, best to be used with Block.height

Attributes-Methods:

update(img: npt.NDArray[np.uint8]): Update image shown with three or one dimensions.

Example:

...
class Example_Block(Block):
	def init(self):
		...
		self.param['Result'] = Image(fixed_width=self.width-40,  
					     fixed_height=self.height-80)

	def run(self):
		...
		self.param['Result'].update(np.zeros((60, 60, 3)))
		...

Table

Allows multiple items/modes to be selected at the same time.

Constructor:

Table

Keyword Arguments:

items: list[str, ...] = ['item1', 'item2', 'item3']: List of texts that are shown on the table list.

Attributes-Methods:

items -> list[str, ...]: Get list of all items.

selected_items -> list[str, ...]: Get list of selected items.

set_items(items: list[str, ...]): Set item list.

Example:

...
class Example_Block(Block):
	def init(self):
		...
		self.param['Detection List'] = Table(items=['Human', 'Cat', 'Dog'])

	def run(self):
		...
		detection_list: list[str, ...] = self.param['Detection List'].selected_items()
		...

Last updated