def __init__(self): super().__init__() # Properties self.title = "Sequence Manager" # Layout self.resize(640, 480) self._sequence_tree = ui.Tree(header=("Name", "Filename"), indentation=0, selected=self.on_sequence_tree_selected) self._add_button = ui.Button(text="&Add", clicked=self.on_add_sequence) self._remove_button = ui.Button(text="&Remove", enabled=False, clicked=self.on_remove_sequence) self._preview_tree = ui.Tree(header=["Key", "Value"]) self.layout = ui.Column(ui.Row(ui.Column(self._sequence_tree, self._preview_tree, stretch=(4, 3)), ui.Column(self._add_button, self._remove_button, ui.Spacer()), stretch=(1, 0)), ui.DialogButtonBox(buttons=("ok", "cancel"), accepted=self.accept, rejected=self.reject), stretch=(1, 0))
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._bindings = {} self.state_handlers = [] self.data_panel = ui.Column() self.general_tab = ui.Tab(title="General", layout=ui.Row()) self.control_tabs = ui.Tabs(self.general_tab) self.status_panel = ui.Column() self.control_panel = ui.Row(self.control_tabs, ui.Column(self.status_panel, ui.Spacer(horizontal=False)), stretch=(3, 1)) self.layout.insert(2, self.data_panel) self.layout.insert(3, self.control_panel) self.layout.stretch = 0, 0, 0, 0, 1 self.measurement = None self.data_tabs = ui.Tabs() self.data_panel.append(self.data_tabs) # Add analysis tab self.analysis_tree = ui.Tree(header=["Parameter", "Value"]) self.data_tabs.insert( 0, ui.Tab(title="Analysis", layout=self.analysis_tree)) # Plots self.series_transform = {} self.series_transform_default = lambda x, y: (x, y)
def __init__(self, position_picked=None, absolute_move=None): super().__init__() self.position_picked = position_picked self.absolute_move = absolute_move self.positions_tree = ui.Tree( header=("Name", "X", "Y", "Z", "Comment"), root_is_decorated=False, selected=self.on_position_selected, double_clicked=self.on_position_double_clicked) self.pick_button = ui.Button( text="Assign &Position", tool_tip="Assign current table position to selected position item", clicked=self.on_pick_position, enabled=False) self.add_button = ui.Button(text="&Add", tool_tip="Add new position item", clicked=self.on_add_position) self.edit_button = ui.Button(text="&Edit", tool_tip="Edit selected position item", clicked=self.on_edit_position, enabled=False) self.remove_button = ui.Button( text="&Remove", tool_tip="Remove selected position item", clicked=self.on_remove_position, enabled=False) self.move_button = ui.Button(text="&Move", tool_tip="Move to selected position", clicked=self.on_move, enabled=False) self.append(self.positions_tree) self.append( ui.Column(self.pick_button, self.move_button, ui.Spacer(), self.add_button, self.edit_button, self.remove_button)) self.stretch = 1, 0
def __init__(self, position_picked=None, absolute_move=None): super().__init__() self.position_picked = position_picked self.absolute_move = absolute_move self.contacts_tree = ui.Tree(header=("Contact", "X", "Y", "Z", None), selected=self.on_contacts_selected) self.contacts_tree.fit() self.pick_button = ui.Button( text="Assign &Position", tool_tip="Assign current table position to selected position item", clicked=self.on_pick_position, enabled=False) self.calculate_button = ui.Button(text="&Calculate", clicked=self.on_calculate, enabled=False) self.move_button = ui.Button(text="&Move", tool_tip="Move to selected position", clicked=self.on_move, enabled=False) self.reset_button = ui.Button(text="&Reset", clicked=self.on_reset, enabled=False) self.reset_all_button = ui.Button(text="Reset &All", clicked=self.on_reset_all) self.append(self.contacts_tree) self.append( ui.Column(self.pick_button, self.move_button, self.calculate_button, ui.Spacer(), self.reset_button, self.reset_all_button)) self.stretch = 1, 0
def __init__(self): super().__init__(title="Table") self.temporary_z_limit_changed = None self._steps_tree = ui.Tree(header=("Size", "Z-Limit", "Color"), root_is_decorated=False) # Hide Z-Limit column self._steps_tree.qt.setColumnHidden(1, True) self._steps_tree.selected = self.on_position_selected self._steps_tree.double_clicked = self.on_steps_tree_double_clicked self._steps_tree.qt.setItemDelegateForColumn( 0, ItemDelegate(self._steps_tree.qt)) self._steps_tree.qt.setItemDelegateForColumn( 1, ItemDelegate(self._steps_tree.qt)) self._add_step_button = ui.Button(text="&Add", tool_tip="Add table step", clicked=self.on_add_step_clicked) self._edit_step_button = ui.Button(text="&Edit", tool_tip="Edit selected table step", enabled=False, clicked=self.on_edit_step_clicked) self._remove_step_button = ui.Button( text="&Remove", tool_tip="Remove selected table step", enabled=False, clicked=self.on_remove_step_clicked) self._z_limit_movement_number = ui.Number( minimum=0, maximum=128.0, decimals=3, suffix="mm", changed=self.on_z_limit_movement_changed) def create_number(): return ui.Number(minimum=0, maximum=1000.0, decimals=3, suffix="mm") self._probecard_limit_x_maximum_number = create_number() self._probecard_limit_y_maximum_number = create_number() self._probecard_limit_z_maximum_number = create_number() self._probecard_limit_z_maximum_checkbox = ui.CheckBox( text="Temporary Z-Limit", tool_tip="Select to show temporary Z-Limit notice.") self._joystick_limit_x_maximum_number = create_number() self._joystick_limit_y_maximum_number = create_number() self._joystick_limit_z_maximum_number = create_number() self._probecard_contact_delay_number = ui.Number(minimum=0, maximum=3600, decimals=2, step=.1, suffix="s") self._recontact_overdrive_number = ui.Number(minimum=0, maximum=0.025, decimals=3, step=.001, suffix="mm") self.layout = ui.Column( ui.GroupBox(title="Control Steps (mm)", layout=ui.Row(self._steps_tree, ui.Column(self._add_step_button, self._edit_step_button, self._remove_step_button, ui.Spacer()), stretch=(1, 0))), ui.GroupBox(title="Movement Z-Limit", layout=ui.Column(self._z_limit_movement_number)), ui.GroupBox(title="Probe Card Limts", layout=ui.Row( ui.Column(ui.Label("X"), self._probecard_limit_x_maximum_number), ui.Column(ui.Label("Y"), self._probecard_limit_y_maximum_number), ui.Column(ui.Label("Z"), self._probecard_limit_z_maximum_number), ui.Column( ui.Label(), ui.Label("Maximum"), ), ui.Spacer(), ui.Column( ui.Label(), self._probecard_limit_z_maximum_checkbox, ))), ui.GroupBox(title="Joystick Limits", layout=ui.Row( ui.Column(ui.Label("X"), self._joystick_limit_x_maximum_number), ui.Column(ui.Label("Y"), self._joystick_limit_y_maximum_number), ui.Column(ui.Label("Z"), self._joystick_limit_z_maximum_number), ui.Column( ui.Label(), ui.Label("Maximum"), ), ui.Spacer())), ui.Row(ui.GroupBox(title="Probecard Contact Delay", layout=ui.Row( self._probecard_contact_delay_number)), ui.GroupBox(title="Re-Contact Z-Overdrive (1x)", layout=ui.Row( self._recontact_overdrive_number)), stretch=(0, 1)), stretch=(1, 0, 0, 0, 0))
def main(): app = comet.Application() def on_activated(item): ui.show_info(text=format(item.value)) def on_selected(item): print("Item", format(item.value)) table = ui.Table() table.header = "Name", "Status", "HV", "Current", "Temp.", "Calib." table.stretch = True table.activated = on_activated table.selected = on_selected for i in range(10): table.append([ f"Unnamed{i}", "OK", "", "n/a", "n/a", f"{random.random()*1000:.0f} ohm" ]) # First column user checkable table[i][0].checkable = True table[i][0].checked = random.choice([True, False]) # First column editabled table[i][0].readonly = False table.qt.setCurrentItem(table[0][0].qt) table.fit() def on_activated(index, item): ui.show_info(text=format(item[index].value)) def on_selected(item): print("Item", format(item[0].value)) tree = ui.Tree() tree.header = "Measurement", "Status" tree.activated = on_activated tree.selected = on_selected tree.append(["Flute 1", "OK"]) tree.clear() tree.append(["Flute 2", "OK"]) tree.insert(0, ["Flute 3", "Meas..."]) tree[0][0].checked = True tree[0][1].color = "red" tree[0][1].background = "blue" #tree[0][1].color = None tree[0][1].background = None tree.append(["Flute 4", "OK"]) tree.append(["Flute 5", "OK"]) tree.append(["Flute 6"]) tree.qt.setCurrentItem(tree[2].qt) tree.remove(tree[3]) for i, item in enumerate(tree): if i == 1: item.expanded = True item[0].checked = True item.append(["Test 1", "OK"]) item.append(["Test 2", "OK"]) item.insert(0, ["Test 3", "OK"]) item.children[0][0].checked = True item.children[1][0].checked = False item.children[2][0].checked = True for item in tree: print(item[0].checked) for item in item.children: print(item[0].checked) def measure(process): while process.running: for i in range(10): value = random.choice([True, False]) process.emit('hv', i, value) value = random.uniform(22., 24.) process.emit('temp', i, value) for i in range(2): value = random.choice(["OK", "FAIL"]) process.emit('status', i, value) time.sleep(1) def on_hv(i, value): item = table[i][2] if table[i][0].checked: item.value = {True: "ON", False: "OFF"}[value] item.color = {True: "green", False: "red"}[value] item.bold = not value else: item.value = None def on_temp(i, value): item = table[i][4] if table[i][0].checked: item.value = value item.color = "green" if item.value < 22.5: item.color = "red" else: item.value = None def on_status(i, value): color = {"OK": "green", "FAIL": "red"}[value] tree[i][1].value = value tree[i][1].color = color tree[i][1].bold = value == "FAIL" for item in tree[i].children: if item[0].checked: item[1].value = value item[1].color = color item[1].bold = value == "FAIL" else: item[1].value = None app.layout = ui.Column(table, tree) process = comet.Process(target=measure) process.hv = on_hv process.temp = on_temp process.status = on_status app.processes.add("process", process) process.start() return app.run()
def main(): app = comet.Application() app.title = "UI Demo" values = ["Chapman", "Cleese", "Gilliam", "Idle", "Jones", "Palin"] tab1 = ui.Tab(title="Tab 1", layout=ui.Column( ui.Row(ui.Column( ui.GroupBox(title="Numbers", layout=ui.Column( ui.Label(text="Number 1"), ui.Number(value=1, minimum=0, maximum=10, step=1, prefix="#"), ui.Label(text="Number 2"), ui.Number(value=2.345, minimum=0, maximum=10, step=.1, decimals=3, suffix="mV"), ui.Label(text="Number 3"), ui.Number(value=1.23, minimum=0, maximum=10, decimals=2, suffix="mA", readonly=True), ui.Label(text="Number 4"), ui.Number(value=4.2, minimum=0, maximum=10, decimals=1, suffix="dB", enabled=False)))), ui.Column( ui.GroupBox(title="Text", layout=ui.Column( ui.Label(text="Text 1"), ui.Text(value="Chapman"), ui.Label(text="Text 2"), ui.Text(value="Cleese", clearable=True), ui.Label(text="Text 3"), ui.Text(value="Idle", readonly=True), ui.Label(text="Text 4"), ui.Text(value="Palin", enabled=False)))), ui.Spacer(), stretch=(2, 2, 3)), ui.Spacer(), stretch=(0, 1))) def on_append(): list1.append(f"Spam {len(list1)}") list1.current = list1[0] def on_remove(): if list1.current is not None: list1.remove(list1.current) list1 = ui.List() tab2 = ui.Tab(title="Tab 2", layout=ui.Column(ui.Row( ui.GroupBox(title="List 1", layout=ui.Column( list1, ui.Button(text="&Add", clicked=on_append), ui.Button(text="&Remove", clicked=on_remove))), ui.GroupBox(title="List 2", layout=ui.List(values)), ui.GroupBox(title="List 3", layout=ui.List(values, enabled=False))), ui.Spacer(), stretch=(0, 1))) table1 = ui.Table(header=["Key", "Value"]) tab3 = ui.Tab(title="Tab 3", layout=ui.Column(table1)) tree1 = ui.Tree(header=["Key", "Value"]) tab4 = ui.Tab(title="Tab 4", layout=ui.Column(tree1)) first = ui.Button(text="Click") scroll = ui.ScrollArea(layout=ui.Column(*[ ui.CheckBox(text=f"Option {i+1}", checked=random.choice([True, False])) for i in range(64) ])) second = ui.Column(scroll) tab5 = ui.Tab(title="Tab 5", layout=first) tab5.layout = second del first tab6 = ui.Tab(title="Tab 6", layout=ui.Row(ui.Column( ui.Label("Metric 1"), ui.Metric('V', decimals=3, changed=lambda value: print(value)), ui.Label("Metric 2"), ui.Metric('A', prefixes='munp', changed=lambda value: print(value)), ui.Spacer()), ui.Spacer(), stretch=(1, 2))) def on_changed(value): app.message = value def on_click(): app.message = combobox1.current tabs = ui.Tabs(tab1, tab2, tab3, tab4, tab5, tab6) combobox1 = ui.ComboBox(values) app.layout = ui.Row(ui.Column( ui.GroupBox(title="GroupBox 1", layout=ui.Column( ui.Button(text="Button 1", clicked=on_click), ui.Button(text="Button 2", enabled=False), ui.Button(text="Button 3", checkable=True), ui.Button(text="Button 4", checkable=True, enabled=False), ui.Button(text="Button 5", checkable=True, checked=True))), ui.GroupBox(title="GroupBox 2", layout=ui.Column( ui.CheckBox(text="CheckBox 1"), ui.CheckBox(text="CheckBox 2", enabled=False), ui.CheckBox(text="CheckBox 3", checked=True, enabled=False), ui.CheckBox(text="CheckBox 4", checked=True))), ui.GroupBox(title="GroupBox 3", layout=ui.Column( ui.ComboBox(), combobox1, ui.ComboBox(values, current="Cleese", changed=on_changed), ui.ComboBox(values, current="Idle", enabled=False))), ui.Spacer()), tabs, stretch=(2, 7)) # Populate table spam = table1.append(["Spam", 42]) spam[0].checked = True #spam[0].enabled = False ham = table1.append(["Ham", 41]) ham[0].checked = True #ham[0].enabled = False # Populate tree spam = tree1.append(["Spam", 42]) spam[0].checked = True spam.append(["Ham", 41]) spam.append(["Eggs", 40]) # Add an remove tab tab = ui.Tab() tabs.insert(0, tab) tab.title = "Spam" tabs.remove(tab) app.message = "Notification message..." app.progress = 3, 4 return app.run()