import sys from PyQt5 import Qt from lib.helpers import timing from PyQt5.QtCore import Qt, QTimer, QThread from PyQt5.QtGui import QKeySequence, QPixmap, QPalette, QColor from PyQt5.QtWidgets import QShortcut, QApplication from ui.widget import Widget test_scan="xxx\nyyy\nzzz" class Barcode_Recipe_Selection(Widget): def __init__(self, config): super().__init__() self.barcode_input_l.textChanged.connect(self.get) self.status_palettes = { True: QPalette(), "": QPalette(), "warning": QPalette(), False: QPalette(), None: QPalette(), } self.status_palettes[True].setColor(QPalette.Base, Qt.green) self.status_palettes[False].setColor(QPalette.Base, Qt.red) self.status_palettes["warning"].setColor(QPalette.Base, QColor(255, 165, 0)) self.status_palettes[""].setColor(QPalette.Base, QColor(255, 255, 0)) self.barcode_input_l.setFocus() self.focus_timer = QTimer() self.focus_timer.setSingleShot(True) self.focus_timer.timeout.connect(self.set_focus) def start(self, recipe=None, step=None, pieces=None): self.barcode_input_l.setPalette(self.status_palettes[None]) self.barcode_input_l.setPlainText("") self.barcode_input_l.setFocus() self.focus_timer.start(500) def get(self, data=None, override=False): if data is None: data = self.barcode_input_l.toPlainText() if not len(data): data = None if data is None: return self.barcode_input_l.setPalette(self.status_palettes[True]) else: self.barcode_input_l.setPalette(self.status_palettes[False]) self.focus_timer.start(1000) # LOOKUP RECIPE def set_focus(self): self.barcode_input_l.setFocus() self.barcode_input_l.setPlainText("") self.barcode_input_l.setPalette(self.status_palettes[""])