class timeWidget(QWidget): time = pyqtSignal() def __init__(self, winParent): super(timeWidget, self).__init__() self.winParent = winParent self.seconds = 0 hLayout = QHBoxLayout() timeLabel = QLabel("Time") self.lcd = QLCDNumber(self) self.lcd.setMaximumSize(100, 50) hLayout.addWidget(timeLabel, 0) hLayout.addWidget(self.lcd, 1) hSpacer = QSpacerItem(300, 30, QSizePolicy.Ignored, QSizePolicy.Ignored) hLayout.addItem(hSpacer) self.setLayout(hLayout) timer = QTimer(self) timer.start(1000) timer.timeout.connect(self.printTime) # get the palette palette = self.lcd.palette() # foreground color palette.setColor(palette.WindowText, QColor(85, 85, 255)) # background color palette.setColor(palette.Background, QColor(0, 170, 255)) # "light" border palette.setColor(palette.Light, QColor(255, 0, 0)) # "dark" border palette.setColor(palette.Dark, QColor(0, 255, 0)) # set the palette self.lcd.setPalette(palette) def printTime(self): self.seconds += 1 self.lcd.display(self.seconds)
class timeWidget(QWidget): time = pyqtSignal() def __init__(self,winParent): super(timeWidget, self).__init__() self.winParent=winParent self.seconds = 0 hLayout = QHBoxLayout() timeLabel = QLabel("Time") self.lcd = QLCDNumber(self) self.lcd.setMaximumSize(100,50) hLayout.addWidget(timeLabel,0) hLayout.addWidget(self.lcd, 1) hSpacer = QSpacerItem(300, 30, QSizePolicy.Ignored, QSizePolicy.Ignored) hLayout.addItem(hSpacer) self.setLayout(hLayout) timer = QTimer(self) timer.start(1000) timer.timeout.connect(self.printTime) # get the palette palette = self.lcd.palette() # foreground color palette.setColor(palette.WindowText, QColor(85, 85, 255)) # background color palette.setColor(palette.Background, QColor(0, 170, 255)) # "light" border palette.setColor(palette.Light, QColor(255, 0, 0)) # "dark" border palette.setColor(palette.Dark, QColor(0, 255, 0)) # set the palette self.lcd.setPalette(palette) def printTime(self): self.seconds += 1 self.lcd.display(self.seconds)
class timeDigitalWidget(QWidget): time = pyqtSignal() def __init__(self, winParent, Percentage): super(timeDigitalWidget, self).__init__() self.winParent = winParent self.seconds = 900 self.pose3d = pose3d self.Percentage = Percentage self.show = False self.MAX_PERCENT = 30 self.MAX_MARK = 10 self.hLayout = QHBoxLayout() timeLabel = QLabel("Time") self.lcd = QLCDNumber(self) self.lcd.setMaximumSize(100, 50) self.hLayout.addWidget(timeLabel, 0) self.hLayout.addWidget(self.lcd, 1) hSpacer = QSpacerItem(300, 30, QSizePolicy.Ignored, QSizePolicy.Ignored) self.hLayout.addItem(hSpacer) self.setLayout(self.hLayout) timer = QTimer(self) timer.start(1000) timer.timeout.connect(self.printTime) # get the palette palette = self.lcd.palette() # foreground color palette.setColor(palette.WindowText, QColor(85, 85, 255)) # background color palette.setColor(palette.Background, QColor(0, 170, 255)) # "light" border palette.setColor(palette.Light, QColor(255, 0, 0)) # "dark" border palette.setColor(palette.Dark, QColor(0, 255, 0)) # set the palette self.lcd.setPalette(palette) def showMark(self): self.show = True mark = self.testPercentage() markLabel = QLabel('Final mark: ' + str(mark)) self.hLayout.addWidget(markLabel, 0) self.setLayout(self.hLayout) def printTime(self): if self.seconds > 0: self.seconds -= 1 else: if not self.show: self.showMark() self.lcd.display(self.seconds) def testPercentage(self): pHouse = self.Percentage.calculatePercentage() markPerc = float(pHouse) * float(self.MAX_MARK) / float( self.MAX_PERCENT) if pHouse > self.MAX_PERCENT: markPerc = 10 return markPerc
class DisplayActionneur(anr.Actionneur, QWidget): """ Combinaison d'un objet Actionneur et d'un QWidget """ def __init__(self, parent_robot, nom, min_val, max_val, step=1, unite=None): QWidget.__init__(self) anr.Actionneur.__init__(self, nom, min_val, max_val, step, unite) self.parent_robot = parent_robot self.backend = self.parent_robot.backend self.updated_outside = False self.ping = 0 # Création des widgets de l'équipement self.gridlayout_eqp = QGridLayout(self) self.spaceritem_equipement = QSpacerItem(1, 15) self.label_name_equipement = QLabel() self.label_message_equipement = QLabel("Dernière MAJ (s)") self.lcdnumber_ping_eqp = QLCDNumber() self.layout_discret = QHBoxLayout() self.slider_equipement = QSlider(Qt.Horizontal) self.doublespinbox_eqp = QDoubleSpinBox() self.label_command = QLineEdit() self.label_last_command = QLabel() # Configuration des widgets de l'équipement self.ui_setup_equipement() #calcul et mise à jour du ping def update_ping(self): """Mise à jour du ping de l'équipement""" self.ping = round(abs(time.time() - self.last_updt), 1) self.lcdnumber_ping_eqp.display(format(self.ping)) def ui_setup_equipement(self): """ Configure l'ensemble des widgets de l'équipement""" self.gridlayout_eqp.setAlignment(QT_TOP) if self.unite == "None" or self.unite is None: self.label_name_equipement.setText(self.nom) else: self.label_name_equipement.setText('{0} ({1})'.format(self.nom, self.unite)) self.gridlayout_eqp.addWidget(self.label_name_equipement, 0, 0, 1, 1, QT_LEFT) self.label_message_equipement.setText("Dernière MAJ (s)") self.gridlayout_eqp.addWidget(self.label_message_equipement, 2, 0, 1, 2, QT_LEFT) self.lcdnumber_ping_eqp.setMaximumSize(QSize(75, 25)) self.lcdnumber_ping_eqp.setFixedSize(QLCD_SIZE2) self.gridlayout_eqp.addWidget(self.lcdnumber_ping_eqp, 2, 1, 1, 1, QT_RIGHT) self.slider_equipement.setFixedSize(100, 30) self.slider_equipement.setMinimum(self.min_val) self.slider_equipement.setMaximum(self.max_val) self.slider_equipement.setSingleStep(self.step) self.slider_equipement.valueChanged.connect(self.onvaluechanged_slider) self.layout_discret.addWidget(self.slider_equipement) self.doublespinbox_eqp.setFixedSize(75, 30) self.doublespinbox_eqp.setMaximum(self.max_val) self.doublespinbox_eqp.setMinimum(self.min_val) self.doublespinbox_eqp.setSingleStep(self.step) self.doublespinbox_eqp.setAlignment(QT_CENTER) self.doublespinbox_eqp.valueChanged.connect(self.onvaluechanged) self.layout_discret.addWidget(self.doublespinbox_eqp) self.gridlayout_eqp.addLayout(self.layout_discret, 0, 1, 1, 1, QT_RIGHT) self.label_command.setText("None") self.label_command.setFixedSize(75, 30) self.label_command.setReadOnly(True) self.label_command.setAlignment(QT_CENTER) self.gridlayout_eqp.addWidget(self.label_command, 1, 1, 1, 1, QT_RIGHT) self.label_last_command.setText("Dern. Cmd:") self.gridlayout_eqp.addWidget(self.label_last_command, 1, 0, 1, 1, QT_LEFT) def set_state(self, valeur): """Change la valeur Entrée: - valeur (float)""" anr.Binaire.set_state(self, valeur) self.updated_outside = True self.slider_equipement.setValue(int(valeur)) self.doublespinbox_eqp.setValue(valeur) self.updated_outside = False def updt_cmd(self, state): """Met à jour le timestamp de dernière commande et la dernière commande""" anr.Binaire.updt_cmd(self, state) self.label_command.setText(str(state)) @pyqtSlot() def onvaluechanged(self): """ Affiche et envoie vers backend la dernière commande d'un actionneur discret""" if not self.updated_outside: self.backend.sendeqpcmd(self.parent_robot.rid, self.nom, self.doublespinbox_eqp.value()) self.label_command.setText(str(self.doublespinbox_eqp.value())) self.slider_equipement.setValue(int(self.doublespinbox_eqp.value())) self.updt_cmd(self.doublespinbox_eqp.value()) @pyqtSlot() def onvaluechanged_slider(self): """ Affiche et envoie vers backend la dernière commande d'un actionneur discret""" if not self.updated_outside: self.backend.sendeqpcmd(self.parent_robot.rid, self.nom, self.doublespinbox_eqp.value()) self.label_command.setText(str(self.slider_equipement.value())) self.doublespinbox_eqp.setValue(self.slider_equipement.value()) self.updt_cmd(self.slider_equipement.value())
class DisplayCapteur(anr.Capteur, QWidget): """Une combinaison de Capteur et d'un QWidget""" def __init__(self, parent_robot, nom, min_val, max_val, step=1, unite=None): QWidget.__init__(self) anr.Capteur.__init__(self, nom, min_val, max_val, step, unite) self.parent_robot = parent_robot self.backend = self.parent_robot.backend self.updated_outside = False self.ping = 0 # Création des widgets de l'équipement self.gridlayout_eqp = QGridLayout(self) self.spaceritem_equipement = QSpacerItem(1, 15) self.label_name_equipement = QLabel() self.label_message_equipement = QLabel("Dernière MAJ (s)") self.lcdnumber_ping_eqp = QLCDNumber() self.lcdnumber_eqp = QLCDNumber() self.progressbar_eqp = QProgressBar() # Configuration des widgets de l'équipement self.ui_setup_equipement() def ui_setup_equipement(self): """ Configure l'ensemble des widgets de l'équipement""" self.gridlayout_eqp.setAlignment(QT_TOP) if self.unite == "None" or self.unite is None: self.label_name_equipement.setText(self.nom) else: self.label_name_equipement.setText('{0} ({1})'.format(self.nom, self.unite)) self.gridlayout_eqp.addWidget(self.label_name_equipement, 0, 0, 1, 1, QT_LEFT) self.label_message_equipement.setText("Dernière MAJ (s)") self.gridlayout_eqp.addWidget(self.label_message_equipement, 2, 0, 1, 2, QT_LEFT) self.lcdnumber_ping_eqp.setMaximumSize(QSize(75, 25)) self.lcdnumber_ping_eqp.setFixedSize(QLCD_SIZE2) self.gridlayout_eqp.addWidget(self.lcdnumber_ping_eqp, 2, 1, 1, 1, QT_RIGHT) if self.min_val is None or self.max_val is None or self.step is None: self.lcdnumber_eqp.setMinimumSize(150, 30) self.gridlayout_eqp.addWidget(self.lcdnumber_eqp, 0, 1, 1, 1, QT_RIGHT) self.progressbar_eqp.hide() else: self.progressbar_eqp.setRange(int(self.min_val), int(self.max_val)) self.progressbar_eqp.setAlignment(QT_CENTER) self.progressbar_eqp.setFormat("%v") self.progressbar_eqp.setFixedSize(150, 30) self.gridlayout_eqp.addWidget(self.progressbar_eqp, 0, 1, 1, 1, QT_RIGHT) self.lcdnumber_eqp.hide() #calcul et mise à jour du ping def update_ping(self): """Mise à jour du ping de l'équipement""" self.ping = round(abs(time.time() - self.last_updt), 1) self.lcdnumber_ping_eqp.display(format(self.ping)) def set_state(self, valeur): """Change la valeur Entrée: - valeur (float)""" anr.Binaire.set_state(self, valeur) self.updated_outside = True if self.valeur is not None: self.lcdnumber_eqp.display(self.valeur) self.progressbar_eqp.setValue(int(self.valeur)) self.updated_outside = False
class DisplayBinaire(anr.Binaire, QWidget): """Une combinaison de l'objet Equipement et d'un QWidget""" def __init__(self, parent, nom): QWidget.__init__(self) anr.Binaire.__init__(self, nom) self.parent_robot = parent self.backend = self.parent_robot.backend self.updated_outside = False self.ping = 0 # Création des widgets de l'équipement self.gridlayout_eqp = QGridLayout(self) self.spaceritem_equipement = QSpacerItem(1, 15) self.label_name_equipement = QLabel() self.label_message_equipement = QLabel("Dernière MAJ (s)") self.lcdnumber_ping_eqp = QLCDNumber() self.layout_binaire = QHBoxLayout() self.checkbox_equipement = QCheckBox() self.label_command = QLineEdit() self.label_last_command = QLabel() self.label_binaire = QLabel() # Configuration des widgets de l'équipement self.ui_setup_equipement() def ui_setup_equipement(self): """ Configure l'ensemble des widgets de l'équipement""" self.gridlayout_eqp.setAlignment(QT_TOP) if self.unite == "None" or self.unite is None: self.label_name_equipement.setText(self.nom) else: self.label_name_equipement.setText('{0} ({1})'.format(self.nom, self.unite)) self.gridlayout_eqp.addWidget(self.label_name_equipement, 0, 0, 1, 1, QT_LEFT) self.gridlayout_eqp.addWidget(self.label_message_equipement, 2, 0, 1, 2, QT_LEFT) self.lcdnumber_ping_eqp.setMaximumSize(QSize(75, 25)) self.lcdnumber_ping_eqp.setFixedSize(QLCD_SIZE2) self.gridlayout_eqp.addWidget(self.lcdnumber_ping_eqp, 2, 1, 1, 1, QT_RIGHT) self.label_binaire.setFixedSize(100, 20) self.checkbox_equipement.stateChanged.connect(self.oncheckbox_toggled) self.layout_binaire.addWidget(self.label_binaire) self.layout_binaire.addWidget(self.checkbox_equipement) self.gridlayout_eqp.addLayout(self.layout_binaire, 0, 1, 1, 1, QT_CENTER) self.label_command.setText("None") self.label_command.setFixedSize(75, 30) self.label_command.setReadOnly(True) self.label_command.setAlignment(QT_CENTER) self.gridlayout_eqp.addWidget(self.label_command, 1, 1, 1, 1, QT_RIGHT) self.label_last_command.setText("Dern. Cmd:") self.gridlayout_eqp.addWidget(self.label_last_command, 1, 0, 1, 1, QT_LEFT) def updt_cmd(self, state): """Met à jour le timestamp de dernière commande et la dernière commande""" anr.Binaire.updt_cmd(self, state) self.label_command.setText(str(state)) def set_state(self, valeur): """Change la valeur Entrée: - valeur (float)""" anr.Binaire.set_state(self, valeur) self.updated_outside = True self.checkbox_equipement.setChecked(int(valeur)) self.updated_outside = False #calcul et mise à jour du ping def update_ping(self): """Mise à jour du ping de l'équipement""" self.ping = round(abs(time.time() - self.last_updt), 1) self.lcdnumber_ping_eqp.display(format(self.ping)) @pyqtSlot() def oncheckbox_toggled(self): """ Affiche et renvoie vers backend la dernière commande d'un actionneur binaire""" if not self.updated_outside: state = 1 if self.checkbox_equipement.isChecked() else 0 self.backend.sendeqpcmd(self.parent_robot.rid, self.nom, state) self.updt_cmd(state)
class Calc(QWidget): def __init__(self): super().__init__() self.stack = [0] self.point = False self.n_dec = 0 self.zeros = 0 self.modif = True self.create_gui() def create_gui(self): self.setWindowTitle('Cracker calc') calc_grid = QGridLayout(self) self.screen = QLCDNumber(self) self.screen.setMinimumSize(350, 45) self.screen.setDigitCount(20) calc_grid.addWidget(self.screen, 1, 0, 1, 4) self.little_screen = QLCDNumber(self) self.little_screen.setMaximumSize(175, 20) self.little_screen.setDigitCount(20) calc_grid.addWidget(self.little_screen, 0, 2, 1, 2) labels = [ 'C', 'CE', '√', 'x²', '7', '8', '9', '÷', '4', '5', '6', '×', '1', '2', '3', '-', '0', '.', 'Ent', '+' ] buttons = [] buttons_functions = [ lambda: self.reset(), lambda: self.add('CE'), lambda: self.add('√'), lambda: self.add('x²'), lambda: self.add('7'), lambda: self.add('8'), lambda: self.add('9'), lambda: self.add('÷'), lambda: self.add('4'), lambda: self.add('5'), lambda: self.add('6'), lambda: self.add('×'), lambda: self.add('1'), lambda: self.add('2'), lambda: self.add('3'), lambda: self.add('-'), lambda: self.add('0'), lambda: self.add('.'), lambda: self.add('Ent'), lambda: self.add('+') ] QShortcut(QKeySequence('Delete'), self).activated.connect(buttons_functions[0]) QShortcut(QKeySequence('Backspace'), self).activated.connect(buttons_functions[1]) QShortcut(QKeySequence('s'), self).activated.connect(buttons_functions[2]) QShortcut(QKeySequence('²'), self).activated.connect(buttons_functions[3]) QShortcut(QKeySequence('7'), self).activated.connect(buttons_functions[4]) QShortcut(QKeySequence('8'), self).activated.connect(buttons_functions[5]) QShortcut(QKeySequence('9'), self).activated.connect(buttons_functions[6]) QShortcut(QKeySequence('/'), self).activated.connect(buttons_functions[7]) QShortcut(QKeySequence('4'), self).activated.connect(buttons_functions[8]) QShortcut(QKeySequence('5'), self).activated.connect(buttons_functions[9]) QShortcut(QKeySequence('6'), self).activated.connect(buttons_functions[10]) QShortcut(QKeySequence('*'), self).activated.connect(buttons_functions[11]) QShortcut(QKeySequence('1'), self).activated.connect(buttons_functions[12]) QShortcut(QKeySequence('2'), self).activated.connect(buttons_functions[13]) QShortcut(QKeySequence('3'), self).activated.connect(buttons_functions[14]) QShortcut(QKeySequence('-'), self).activated.connect(buttons_functions[15]) QShortcut(QKeySequence('0'), self).activated.connect(buttons_functions[16]) QShortcut(QKeySequence('.'), self).activated.connect(buttons_functions[17]) QShortcut(QKeySequence('Return'), self).activated.connect(buttons_functions[18]) QShortcut(QKeySequence('+'), self).activated.connect(buttons_functions[19]) for k in range(20): buttons.append(QPushButton(labels[k])) buttons[k].clicked.connect(buttons_functions[k]) calc_grid.addWidget(buttons[k], 2 + k // 4, k % 4) self.display() def add(self, c): if c in '0123456789': if not self.modif: self.stack.append(0) self.modif = True self.addNumeral(int(c)) elif c == '.': if not self.modif: self.stack.append(0) self.modif = True self.point = True elif c == 'CE' and self.modif: self.stack[-1] = 0 self.point = False self.zeros = 0 self.n_dec = 0 else: self.point = False self.zeros = 0 self.n_dec = 0 if c == 'Ent': self.modif = True self.stack.append(0) elif c in ('√', 'x²'): if c == '√' and self.stack[-1] >= 0: self.stack[-1] = math.sqrt(self.stack[-1]) self.modif = False else: self.stack[-1] = self.stack[-1]**2 self.modif = False elif c in '+-×÷': if len(self.stack) >= 2: if c == '+': self.stack[-2] = self.stack[-2] + self.stack[-1] del self.stack[-1] self.modif = False elif c == '-': self.stack[-2] = self.stack[-2] - self.stack[-1] del self.stack[-1] self.modif = False elif c == '×': self.stack[-2] = self.stack[-2] * self.stack[-1] del self.stack[-1] self.modif = False elif self.stack[-1] != 0: self.stack[-2] = self.stack[-2] / self.stack[-1] del self.stack[-1] self.modif = False self.display() def addNumeral(self, n): if self.point: self.n_dec += 1 if n != 0: self.stack[-1] += n / 10**self.n_dec self.zeros = 0 else: self.zeros += 1 else: self.stack[-1] = self.stack[-1] * 10 + n def display(self): if self.point and self.stack[-1] == int(self.stack[-1]): self.screen.display(str(self.stack[-1]) + '.' + self.zeros * '0') else: self.screen.display(str(self.stack[-1]) + self.zeros * '0') if len(self.stack) > 1: self.little_screen.display(self.stack[-2]) else: self.little_screen.display("") def reset(self): self.stack = [0] self.point = False self.n_dec = 0 self.zeros = 0 self.modif = True self.display()
class timeDigitalWidget(QWidget): time = pyqtSignal() def __init__(self,winParent, percentaje): super(timeDigitalWidget, self).__init__() self.winParent=winParent self.seconds = 900 self.pose3d = pose3d self.percentaje = percentaje self.show = False self.MAX_PERCENT = 30 self.MAX_MARK = 10 self.hLayout = QHBoxLayout() timeLabel = QLabel("Time") self.lcd = QLCDNumber(self) self.lcd.setMaximumSize(100,50) self.hLayout.addWidget(timeLabel,0) self.hLayout.addWidget(self.lcd, 1) hSpacer = QSpacerItem(300, 30, QSizePolicy.Ignored, QSizePolicy.Ignored) self.hLayout.addItem(hSpacer) self.setLayout(self.hLayout) timer = QTimer(self) timer.start(1000) timer.timeout.connect(self.printTime) # get the palette palette = self.lcd.palette() # foreground color palette.setColor(palette.WindowText, QColor(85, 85, 255)) # background color palette.setColor(palette.Background, QColor(0, 170, 255)) # "light" border palette.setColor(palette.Light, QColor(255, 0, 0)) # "dark" border palette.setColor(palette.Dark, QColor(0, 255, 0)) # set the palette self.lcd.setPalette(palette) def showMark(self): self.show = True mark = self.testPercentaje() markLabel = QLabel('Final mark: ' + str(mark)) self.hLayout.addWidget(markLabel, 0) self.setLayout(self.hLayout) def printTime(self): if self.seconds > 0: self.seconds -= 1 else: if not self.show: self.showMark() self.lcd.display(self.seconds) def testPercentaje(self): pHouse = self.percentaje.calculatePercentaje() markPerc = float(pHouse) * float(self.MAX_MARK) / float(self.MAX_PERCENT) if pHouse > self.MAX_PERCENT: markPerc = 10 return markPerc
class tiempoDigitalWidget(QWidget): time = pyqtSignal() def __init__(self, winParent, porcentaje): super(tiempoDigitalWidget, self).__init__() self.winParent = winParent self.seconds = 900 self.pose3d = pose3d self.porcentaje = porcentaje self.show = False self.MAX_PERCENT = 30 self.MAX_NOTA = 10 self.hLayout = QHBoxLayout() tiempoLabel = QLabel("Tiempo") self.lcd = QLCDNumber(self) self.lcd.setMaximumSize(100, 50) self.hLayout.addWidget(tiempoLabel, 0) self.hLayout.addWidget(self.lcd, 1) hSpacer = QSpacerItem(300, 30, QSizePolicy.Ignored, QSizePolicy.Ignored) self.hLayout.addItem(hSpacer) self.setLayout(self.hLayout) timer = QTimer(self) timer.start(1000) timer.timeout.connect(self.printTime) # get the palette palette = self.lcd.palette() # foreground color palette.setColor(palette.WindowText, QColor(85, 85, 255)) # background color palette.setColor(palette.Background, QColor(0, 170, 255)) # "light" border palette.setColor(palette.Light, QColor(255, 0, 0)) # "dark" border palette.setColor(palette.Dark, QColor(0, 255, 0)) # set the palette self.lcd.setPalette(palette) def showNota(self): self.show = True nota = self.testPorcentaje() notaLabel = QLabel('Nota final: ' + str(nota)) self.hLayout.addWidget(notaLabel, 0) self.setLayout(self.hLayout) def printTime(self): if self.seconds > 0: self.seconds -= 1 else: if not self.show: self.showNota() self.lcd.display(self.seconds) def testPorcentaje(self): pCasa = self.porcentaje.calculatePercentaje() notaPorc = pCasa * self.MAX_NOTA / self.MAX_PERCENT if pCasa > self.MAX_PERCENT: notaPorc = 10 return notaPorc
class SettingsInterface: def __init__(self, variable, signals): self.signals = signals self.create_interface(variable) def create_interface(self, variable): self.__setting_box = QHBoxLayout() self.__setting_box.addWidget(QLabel("Settings:")) self.__setting_box.addWidget(QLabel('N=')) self.__setting_box.addWidget(variable['n']) self.__setting_box.addWidget(QLabel('M=')) self.__setting_box.addWidget(variable['m']) self.__setting_box.addWidget(QLabel('Mines=')) self.__setting_box.addWidget(variable['mines']) self.__setting_box.addWidget(variable['ok_button']) self.__setting_box.addWidget(variable['pause_button']) self.__statistics_box = QHBoxLayout() self.time_display = QLCDNumber() self.time_display.setFrameShape(QFrame.NoFrame) self.time_display.setMaximumSize(80, 40) self.time_display.setMinimumSize(80, 40) self.bombs_display = QLCDNumber() self.bombs_display.setMaximumSize(80, 40) self.bombs_display.setMinimumSize(80, 40) self.bombs_display.setFrameShape(QFrame.NoFrame) self.signals.update_time_display.connect(self.update_time) self.signals.update_bombs_display.connect(self.update_bombs) clock = QPushButton() clock.setStyleSheet('border: none;') clock.setIcon(QtGui.QIcon('../Images/clock.png')) clock.setMaximumSize(40, 40) clock.clicked.connect(self.paint_clock) self.clock_click = False bomb = QPushButton() bomb.setStyleSheet('border: none;') bomb.setIcon(QtGui.QIcon('../Images/bomb.png')) bomb.setMaximumSize(40, 40) bomb.clicked.connect(self.paint_bomb) self.bomb_click = False self.__statistics_box.addWidget(clock) self.__statistics_box.addWidget(self.time_display) self.__statistics_box.addWidget(bomb) self.__statistics_box.addWidget(self.bombs_display) def paint_clock(self): if not self.clock_click: self.clock_click = True self.time_display.setStyleSheet('font-size: 12px;' 'font-family: Arial;color: rgb(255, 255, 255);' 'background-color: rgb(38,56,76);') else: self.clock_click = False self.time_display.setStyleSheet(None) def paint_bomb(self): if not self.bomb_click: self.bomb_click = True self.bombs_display.setStyleSheet('font-size: 12px;' 'font-family: Arial;color: rgb(255, 255, 255);' 'background-color: rgb(38,56,76);') else: self.bomb_click = False self.bombs_display.setStyleSheet(None) def update_time(self): self.time_display.display(globals.time) def update_bombs(self): self.bombs_display.display(globals.flag_bombs) def layout(self): frame = QFrame() frame.setFrameShape(QFrame.StyledPanel) self.__layout = QVBoxLayout() self.__layout.addLayout(self.__setting_box) self.__layout.addLayout(self.__statistics_box) self.__layout.addStretch(1) self.__layout.setSpacing(10) frame.setLayout(self.__layout) frame.setMaximumSize(560, 126) layout = QVBoxLayout() layout.addWidget(frame) return layout