def __init__(self, *args, **kwargs): defaults = {"name": "Chopper"} defaults.update(kwargs) kwargs = defaults name = defaults.pop("name") self.controller = controller.ChopperController() self.controller.from_chopper.connect(self.update_read_area) self.s = "> " self.controller.start.emit() self.controller.to_chopper.emit("verbose=1") QtGui.QWidget.__init__(self, *args, **kwargs) UiWidget.__init__(self) self.setupUi(self) self.setObjectName(name) # Set internal state at the beginning self.chopper_is_on = False self.freq = 100. self.editing = False # Connect widgets to methods self.on_button.clicked.connect(self.turn_chopper_on) self.off_button.clicked.connect(self.turn_chopper_off) self.freq_edit.returnPressed.connect(self.update_freq) self.freq_edit.textEdited.connect(self.text_edited) self.freq_edit.editingFinished.connect(self.editing_finished) self.console_edit.returnPressed.connect(self.console_enter) self.controller_tab.setEnabled(False) # Create daemon to synchronize display with internal state # We'll start it after the window is shown self.sync_daemon = sync.SyncDaemon() # We will sync button states to internal on/off state sync_vals = [ (self.is_chopper_on, self.on_button.isChecked, self.on_button.setChecked), (self.is_chopper_off, self.off_button.isChecked, self.off_button.setChecked) ] # We'll also sync the text in the lineEdit to the internal freq state sync_vals.extend([ (self.get_freq_str, self.freq_edit.text, self.set_freq_edit_ptext) ]) # Sync everything for sync_val in sync_vals: self.sync_daemon.sync(*sync_val) # since sync_daemon is a Qthread, this will wait until the event loop # starts to start the daemon self.sync_daemon.start()
def __init__(self): QtGui.QWidget.__init__(self) Ui_Widget.__init__(self) self.setupUi(self) # Set internal state at the beginning self.chopper_is_on = False self.freq = 100. self.editing = False # Connect widgets to methods self.on_button.clicked.connect(self.turn_chopper_on) self.off_button.clicked.connect(self.turn_chopper_off) self.freq_edit.returnPressed.connect(self.update_freq) self.freq_edit.textEdited.connect(self.text_edited) self.freq_edit.editingFinished.connect(self.editing_finished) # Create daemon to synchronize display with internal state # We'll start it after the window is shown self.sync_daemon = sync.SyncDaemon() # We will sync button states to internal on/off state sync_vals = [ (self.is_chopper_on, self.on_button.isChecked, self.on_button.setChecked), (self.is_chopper_off, self.off_button.isChecked, self.off_button.setChecked) ] # We'll also sync the text in the lineEdit to the internal freq state sync_vals.extend([ (self.get_freq_str, self.freq_edit.text, self.set_freq_edit_text) ]) # Sync everything for sync_val in sync_vals: self.sync_daemon.sync(*sync_val)