def addLCDNumbers(self): fortLCD = QLCDNumber(1, self) fortLCD.setFrameShape(QFrame.NoFrame) fortLCD.move(125, 50) fortLCD.resize(40, 40) fortLCD.display(self.square.ter.buildings.fort_lvl) incomeLCD = QLCDNumber(2, self) incomeLCD.setFrameShape(QFrame.NoFrame) incomeLCD.move(117, 10) incomeLCD.resize(40, 40) incomeLCD.display(self.square.ter.get_income()) marketLCD = QLCDNumber(1, self) marketLCD.setFrameShape(QFrame.NoFrame) marketLCD.move(125, 90) marketLCD.resize(40, 40) marketLCD.display(self.square.ter.buildings.market_lvl) self.square.incomeChanged.connect(incomeLCD.display) self.square.fortUpgr.connect(fortLCD.display) self.square.marketUpgr.connect(marketLCD.display)
def addIncomeInfo(self, font): ''' Adds the income LCDNumber and connects it with the correct signals. ''' incomeLbl = QLabel("Income:", self) incomeLbl.setFont(font) incomeLbl.move(460, 10) incomeLcd = QLCDNumber(3, self) incomeLcd.move(530, 0) incomeLcd.setFrameShape(QFrame.NoFrame) incomeLcd.resize(60, 40) self.sig.incomeChanged.connect(incomeLcd.display) self.sig.incomeChanged.emit(self.game.player.income())
def addGoldInfo(self, font): ''' Adds gold LCDNumber and connects it with the correct signal. ''' goldLbl = QLabel('Gold:', self) goldLbl.move(300, 10) goldLbl.setFont(font) goldLcd = QLCDNumber(4, self) goldLcd.move(360, 0) goldLcd.setFrameShape(QFrame.NoFrame) goldLcd.resize(65, 40) self.sig.goldChanged.connect(goldLcd.display) self.sig.goldChanged.emit(self.game.player.gold)
def addMaintInfo(self, font): ''' Adds maintenance QLCDNumber and connects it with the correct signals. ''' maintLbl = QLabel("Total maintenance:", self) maintLbl.move(620, 10) maintLbl.setFont(font) maintLcd = QLCDNumber(3, self) maintLcd.move(840, 7) maintLcd.setFrameShape(QFrame.NoFrame) maintLcd.resize(50, 30) self.sig.maintChanged.connect(maintLcd.display) maint = self.game.player.get_armies_maint() self.sig.maintChanged.emit(maint[0] + maint[1])
class Soc(QWidget): def __init__(self, parent): super(Soc, self).__init__(parent) self.arguments = Arg_Class() self.socValue = 0.0 self.socLCD = QLCDNumber(self) self.socLCD.display( str(int(self.socValue)).zfill(4) + '.' + str((self.socValue - int(self.socValue)) * 10).zfill(4)) self.socLCD.setFrameShape(QFrame.NoFrame) self.socLCD.setSegmentStyle(QLCDNumber.Flat) #self.socLCD.move(30,100) self.socLCD.move(0, 20) self.socLCD.resize(70, 80) self.socLabel = QLabel(self) self.socLabel.setText("soc: ") self.socLabel.move(10, 10) self.socLCD.show() self.socLabel.show() @pyqtSlot(float) def soc_update(self, value): if value < 0: value = 0 self.socLCD.display(value) self.socValue = value self.update() #self.socGauge.display(str(int(self.socValue)).zfill(2)+'.'+ str((self.socValue - int(self.socValue))*10).zfill(2)) def paintEvent(self, event): qp = QPainter(self) qp.setPen(Qt.white) qp.drawRect(70, 20, 70, 180) qp.drawRect(96, 10, 20, 10) if self.socValue < 0: self.socValue = 0 if self.socValue < 20: qp.setBrush(Qt.red) else: qp.setBrush(Qt.green) qp.drawRect(70, 20 + (180 * (1 - (self.socValue / 100))), 70, ((180 * self.socValue / 100)))
class Channel3(QWidget): def __init__(self, parent, name, x, y, value): super(Channel3, self).__init__(parent) self.label = QLabel(name, self) self.label.resize(CHANNEL_WIDTH, 20) self.label.move(x, y) self.gauge = QLCDNumber(self) self.gauge.display(value) self.gauge.move(x, y + 20) self.gauge.resize(CHANNEL_WIDTH, CHANNEL_HEIGHT) self.gauge.setFrameShape(QFrame.NoFrame) self.gauge.setSegmentStyle(QLCDNumber.Flat) @pyqtSlot(float) def channel_update(self, value): self.gauge.display(value) self.value = value self.update()
class Gps(QWidget): def __init__(self, parent): super(Gps, self).__init__(parent) self.arguments = Arg_Class() self.latValue = 5.0 self.longValue = 3.0 self.rollValue = 0.0 self.pitchValue = 0.0 self.gForceValue = 0.0 self.latLCD = QLCDNumber(self) self.latLCD.display(self.latValue) self.latLCD.setFrameShape(QFrame.NoFrame) self.latLCD.setSegmentStyle(QLCDNumber.Flat) self.latLCD.move(0, 30) self.latLCD.resize(70, 50) self.latLCD.hide() self.latLabel = QLabel(self) self.latLabel.setText("lat: ") self.latLabel.move(0, 20) self.latLabel.hide() self.longLCD = QLCDNumber(self) self.longLCD.display(self.longValue) self.longLCD.setFrameShape(QFrame.NoFrame) self.longLCD.setSegmentStyle(QLCDNumber.Flat) self.longLCD.move(100, 30) self.longLCD.resize(70, 50) self.longLCD.hide() self.longLabel = QLabel(self) self.longLabel.setText("long: ") self.longLabel.move(100, 20) self.longLabel.hide() self.rollLCD = QLCDNumber(self) self.rollLCD.display(self.rollValue) self.rollLCD.setFrameShape(QFrame.NoFrame) self.rollLCD.setSegmentStyle(QLCDNumber.Flat) self.rollLCD.move(200, 30) self.rollLCD.resize(70, 50) self.rollLCD.hide() self.rollLabel = QLabel(self) self.rollLabel.setText("Roll: ") self.rollLabel.move(200, 20) self.rollLabel.hide() self.pitchLCD = QLCDNumber(self) self.pitchLCD.display(self.pitchValue) self.pitchLCD.setFrameShape(QFrame.NoFrame) self.pitchLCD.setSegmentStyle(QLCDNumber.Flat) self.pitchLCD.move(300, 30) self.pitchLCD.resize(70, 50) self.pitchLCD.hide() self.pitchLabel = QLabel(self) self.pitchLabel.setText("Pitch: ") self.pitchLabel.move(300, 20) self.pitchLabel.hide() self.gForceLCD = QLCDNumber(self) self.gForceLCD.display(self.gForceValue) self.gForceLCD.setFrameShape(QFrame.NoFrame) self.gForceLCD.setSegmentStyle(QLCDNumber.Flat) self.gForceLCD.move(0, 100) self.gForceLCD.resize(70, 50) self.gForceLCD.hide() self.gForceLabel = QLabel(self) self.gForceLabel.setText("gForce: ") self.gForceLabel.move(0, 100) self.gForceLabel.hide() self.latLCD.show() self.latLabel.show() self.longLCD.show() self.longLabel.show() self.rollLCD.show() self.rollLabel.show() self.pitchLCD.show() self.pitchLabel.show() self.gForceLCD.show() self.gForceLabel.show() @pyqtSlot(float) def lat_update(self, value): self.latLCD.display(value) self.latValue = value self.update() @pyqtSlot(float) def long_update(self, value): self.longLCD.display(value) self.longValue = value self.update() @pyqtSlot(float) def roll_update(self, value): self.rollLCD.display(value) self.rollValue = value self.update() @pyqtSlot(float) def pitch_update(self, value): self.pitchLCD.display(value) self.pitchValue = value self.update() @pyqtSlot(float) def gForce_update(self, value): self.gForceLCD.display(value) self.gForceValue = value self.update() def paintEvent(self, event): qp = QPainter(self) qp.setPen(Qt.white)
class Error(QWidget): def __init__(self, parent): super(Error, self).__init__(parent) self.arguments = Arg_Class() self.rpmCutValue = 0 self.rpmCutValuePrev = 0 self.cutFlag = 0 self.DCLValue = 0 self.errorCodePL = 0 # post low self.errorCodePH = 0 # post high self.errorCodeRL = 0 # run low self.errorCodeRH = 0 # run high self.DCLGauge = QLCDNumber(self) self.DCLGauge.display(str(self.DCLValue).zfill(1)) self.DCLGauge.move(200, 0) self.DCLGauge.resize(80, 80) self.DCLGauge.setFrameShape(QFrame.NoFrame) self.DCLGauge.setSegmentStyle(QLCDNumber.Flat) self.DCLlabel = QLabel(self) self.DCLlabel.setText("DCL: ") self.DCLlabel.move(200, 0) self.PLErrorGauge = QLCDNumber(self) self.PLErrorGauge.display(str(self.errorCodePL).zfill(1)) self.PLErrorGauge.move(0, 0) self.PLErrorGauge.resize(80, 80) self.PLErrorGauge.setFrameShape(QFrame.NoFrame) self.PLErrorGauge.setSegmentStyle(QLCDNumber.Flat) self.PHErrorGauge = QLCDNumber(self) self.PHErrorGauge.display(str(self.errorCodePH).zfill(1)) self.PHErrorGauge.move(20, 0) self.PHErrorGauge.resize(80, 80) self.PHErrorGauge.setFrameShape(QFrame.NoFrame) self.PHErrorGauge.setSegmentStyle(QLCDNumber.Flat) self.RLErrorGauge = QLCDNumber(self) self.RLErrorGauge.display(str(self.errorCodeRL).zfill(1)) self.RLErrorGauge.move(40, 0) self.RLErrorGauge.resize(80, 80) self.RLErrorGauge.setFrameShape(QFrame.NoFrame) self.RLErrorGauge.setSegmentStyle(QLCDNumber.Flat) self.RHErrorGauge = QLCDNumber(self) self.RHErrorGauge.display(str(self.errorCodeRH).zfill(1)) self.RHErrorGauge.move(60, 0) self.RHErrorGauge.resize(80, 80) self.RHErrorGauge.setFrameShape(QFrame.NoFrame) self.RHErrorGauge.setSegmentStyle(QLCDNumber.Flat) self.errorlabel = QLabel(self) self.errorlabel.setText("Error code: ") self.errorlabel.move(0, 0) self.rpmCutGauge = QLCDNumber(self) self.rpmCutGauge.display(str(self.DCLValue).zfill(1)) self.rpmCutGauge.move(300, 0) self.rpmCutGauge.resize(100, 100) self.rpmCutGauge.setFrameShape(QFrame.NoFrame) self.rpmCutGauge.setSegmentStyle(QLCDNumber.Flat) self.rpmCutGauge.hide() self.rpmCutLabel = QLabel(self) self.rpmCutLabel.setText("RPM Before Cut: ") self.rpmCutLabel.move(300, 0) self.rpmCutLabel.hide() @pyqtSlot(float) def DCL_update(self, value): self.DCLGauge.display(value) @pyqtSlot(float) def RPMCut_update(self, value): rpmCutValue = value if value > 10 and self.cutFlag == 0: self.rpmCutGauge.hide() #self.rpmCutGauge.display(value) self.rpmCutValuePrev = value else: self.rpmCutGauge.display(self.rpmCutValuePrev) self.rpmCutGauge.show() self.rpmCutLabel.show() self.cutFlag = 1 @pyqtSlot(int, int, int, int) def error_update(self, value1, value2, value3, value4): self.PLErrorGauge.display(value1) self.PHErrorGauge.display(value2) self.RLErrorGauge.display(value3) self.RHErrorGauge.display(value4)
class GUI(QMainWindow): def __init__(self): super().__init__() self.resize(600, 600) self.setWindowTitle("Untitled-Notepad") self.setWindowIcon( QIcon(r'C:\Users\Yash\PycharmProjects\ppppp\Notepad\icons.png')) #self.timer=QTimer(self) #self.timer.timeout.connect(self.geometrychange) #self.timer.start(10) self.menu = QMenuBar(self) self.file = QMenu("File", self.menu) file = self.file.addAction("New") file.setShortcut("Ctrl+N") file.triggered.connect(self.files) opens = self.file.addAction('Open') opens.setShortcut("Ctrl+O") opens.triggered.connect(self.open) save = self.file.addAction("Save") save.setShortcut("Ctrl+S") save.triggered.connect(self.save) saveas = self.file.addAction("Save as") saveas.triggered.connect(self.saveas) self.file.addSeparator() printsetup = self.file.addAction("Print Preview") printsetup.triggered.connect(self.printsetup) prints = self.file.addAction("Print") prints.setShortcut("Ctrl+P") prints.triggered.connect(self.prints) self.file.addSeparator() exits = self.file.addAction("Exit") exits.setShortcut("Alt+X") exits.triggered.connect(self.exists) self.menu.addMenu(self.file) self.edit = QMenu("Edit", self.menu) undo = self.edit.addAction("Undo") undo.setShortcut("Ctrl+Z") undo.triggered.connect(self.undos) self.edit.addSeparator() self.cuts = self.edit.addAction("Cut") self.cuts.setShortcut("Ctrl+X") self.cuts.triggered.connect(self.cut) self.copys = self.edit.addAction("Copy") self.copys.setShortcut("Ctrl+C") self.copys.triggered.connect(self.copy) self.pastes = self.edit.addAction("Paste") self.pastes.setShortcut("Ctrl+V") self.pastes.triggered.connect(self.paste) self.deletes = self.edit.addAction("Delete") self.deletes.setShortcut("Del") self.deletes.triggered.connect(self.delete) self.edit.addSeparator() self.finding = self.edit.addAction("Find") self.finding.setShortcut("Ctrl+F") self.finding.triggered.connect(self.finds) self.findnexts = self.edit.addAction("Find Next") self.findnexts.setShortcut("F3") self.findnexts.triggered.connect(self.nexts) replace = self.edit.addAction("Replace") replace.setShortcut("Ctrl+H") replace.triggered.connect(self.replace) go = self.edit.addAction("Go To") go.setShortcut("Ctrl+G") go.triggered.connect(self.go) check = QTimer(self) check.timeout.connect(self.check) check.start(100) self.edit.addSeparator() select = self.edit.addAction("Select All") select.setShortcut("Ctrl+A") select.triggered.connect(self.select) time = self.edit.addAction("Time/Date") time.setCheckable(True) time.setShortcut("F5") time.triggered.connect(self.todaytime) self.menu.addMenu(self.edit) self.format = QMenu("Format", self.menu) self.wrap = self.format.addAction("Word Wrap") self.wrap.setCheckable(True) self.wrap.setChecked(True) self.wrap.triggered.connect(self.word) font = self.format.addAction("Font") font.triggered.connect(self.fonts) self.menu.addMenu(self.format) self.view = QMenu("View", self.menu) zoom = QMenu("Zoom", self.view) In = zoom.addAction("Zoom In") In.setShortcut("Ctrl++") In.triggered.connect(self.zoomin) out = zoom.addAction("Zoom Out") out.setShortcut("Ctrl+-") out.triggered.connect(self.zoomout) restore = zoom.addAction("Restore Default Zoom") restore.setShortcut("Ctrl+0") restore.triggered.connect(self.restore) self.view.addMenu(zoom) self.statused = self.view.addAction("Status Bar") self.statused.setCheckable(True) self.statused.setChecked(True) self.statused.triggered.connect(self.status) self.menu.addMenu(self.view) self.help = QMenu("Help", self.menu) help = self.help.addAction("View Help") help.triggered.connect(self.helps) self.help.addSeparator() about = self.help.addAction("About Notepad") about.triggered.connect(self.about) self.menu.addMenu(self.help) self.setMenuBar(self.menu) self.centralwidget = QWidget(self) self.textEdit = QTextEdit(self.centralwidget) self.textEdit.setGeometry(QRect(0, 0, 600, 579)) self.textEdit.setUndoRedoEnabled(True) font = QFont() font.setFamily('Arial') font.setPointSize(16) self.textEdit.setFont(font) self.textEdit.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.textEdit.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.textEdit.setLineWrapMode(self.textEdit.WidgetWidth) self.textEdit.setLineWidth(2) try: self.path = str(sys.argv[1]) f = open(self.path, 'r', encoding='utf-8') data = f.read() self.textEdit.setText(data) self.setWindowTitle(os.path.basename(self.path) + '-Notepad') except: pass self.setCentralWidget(self.centralwidget) self.show() def closeEvent(self, event): if self.close: reply = QMessageBox.question(self, "You want to quit? ", "Task is in progress !", QMessageBox.Yes, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() def resizeEvent(self, event): if self.statused.isChecked() == True: self.status() self.statusbar.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().width(), self.geometry().width(), 20)) self.textEdit.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().y() - self.geometry().getCoords()[1], self.geometry().width(), self.geometry().height() - 42)) else: self.textEdit.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().y() - self.geometry().getCoords()[1], self.geometry().width(), self.geometry().height() - 21)) def check(self): if len(self.textEdit.toPlainText()) == 0: self.copys.setDisabled(True) self.cuts.setDisabled(True) self.pastes.setDisabled(True) self.deletes.setDisabled(True) self.finding.setDisabled(True) self.findnexts.setDisabled(True) else: self.finding.setDisabled(False) self.findnexts.setDisabled(False) self.copys.setDisabled(False) self.cuts.setDisabled(False) self.pastes.setDisabled(False) self.deletes.setDisabled(False) if self.statused.isChecked() == True: time = QTime.currentTime() text = time.toString("hh:mm:ss") self.time.display(text) cursor = self.textEdit.textCursor() row = cursor.blockNumber() + 1 col = cursor.columnNumber() self.label.setText("Row: " + str(row) + "| Col: " + str(col)) def status(self): if self.statused.isChecked() == True: self.statusbar = QStatusBar(self) self.statusbar.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().width(), self.geometry().width(), 20)) self.textEdit.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().y() - self.geometry().getCoords()[1], self.geometry().width(), self.geometry().height() - 42)) font = QFont() font.setPointSize(10) self.statusbar.setFont(font) self.label = QLabel("Row: 0 | Col: 0") self.statusbar.addPermanentWidget(self.label) self.time = QLCDNumber() self.time.setDigitCount(8) self.time.setFrameShadow(QFrame.Sunken) self.time.setFrameShape(QFrame.Panel) self.statusbar.addWidget(self.time) self.setStatusBar(self.statusbar) else: self.textEdit.setGeometry( QRect(self.geometry().x() - self.geometry().getCoords()[0], self.geometry().y() - self.geometry().getCoords()[1], self.geometry().width(), self.geometry().height() - 21)) vboxlayout = QVBoxLayout() vboxlayout.setContentsMargins(QtCore.QMargins()) vboxlayout.setSpacing(0) sizegrip = QSizeGrip(self.centralwidget) sizegrip.setVisible(True) vboxlayout.addWidget(sizegrip, 0, Qt.AlignBottom | Qt.AlignRight) self.centralwidget.setLayout(vboxlayout) self.statusbar.hide() def helps(self): QMessageBox.information(self, "Help", "This is your notepad made by PyQt5") def about(self): QMessageBox.information(self, "About", "This is the Notepad made by Yash Rajput") def files(self): self.textEdit.setText('') self.setWindowTitle("Untitled-Notepad") self.filename = ["Untitled-Notepad"] self.new = True def open(self): self.filename = QFileDialog.getOpenFileName( self, 'Open File', '\home', 'Text Files (*.txt);;All Files (*)') if self.filename[0]: f = open(self.filename[0], 'r', encoding='utf-8') try: data = f.read() self.textEdit.setText(data) self.setWindowTitle( os.path.basename(self.filename[0]) + '-Notepad') except: pass def save(self): try: if self.new == False: w = open(self.filename[0], 'w') print(self.filename[0]) w.write(self.textEdit.toPlainText()) w.close() elif self.new == True: self.saveas() except: self.saveas() def saveas(self): self.filename = QFileDialog.getSaveFileName( self, "Save as", '\home', 'Text Files(*.txt);;All Files(*)') try: f = open(self.filename[0], 'w') f.write(self.textEdit.toPlainText()) f.close() self.new = False self.setWindowTitle( os.path.basename(self.filename[0]) + '-Notepad') except: pass def exists(self): box = QMessageBox.question(self, "You want to quit? ", "Task is in progress !", QMessageBox.Yes, QMessageBox.No) if box.exec() == box.Yes: self.destroy() def undos(self): self.textEdit.undo() def cut(self): self.textEdit.cut() def copy(self): self.textEdit.copy() def paste(self): self.textEdit.paste() def select(self): self.textEdit.selectAll() def delete(self): cursor = self.textEdit.textCursor() cursor.removeSelectedText() def todaytime(self): self.textEdit.insertPlainText(str(datetime.today())) def word(self): if self.wrap.isChecked(): self.textEdit.setLineWrapMode(self.textEdit.WidgetWidth) else: self.textEdit.setLineWrapMode(self.textEdit.NoWrap) def fonts(self): font, ok = QFontDialog.getFont() if ok: self.textEdit.setFont(font) def zoomin(self): font = QFont(self.textEdit.font()) size = font.pointSize() font.setPointSize(size + 1) self.textEdit.setFont(font) def zoomout(self): font = QFont(self.textEdit.font()) size = font.pointSize() font.setPointSize(size - 1) self.textEdit.setFont(font) def restore(self): font = QFont() font.setPointSize(8) font.setFamily('Arial') self.textEdit.setFont(font) def finds(self): self.pc = Find(w) self.pc.exec() def replace(self): p = replaces(w) p.exec() def go(self): temp = Go(w) temp.exec() def prints(self): self.printer = QPrinter(QPrinter.HighResolution) dialog = QPrintDialog(self.printer, self) if dialog.exec_() == QPrintDialog.Accepted: w.textEdit.print_(self.printer) def printsetup(self): self.printer = QPrinter(QPrinter.HighResolution) dialog = QPrintPreviewDialog(self.printer, self) dialog.paintRequested.connect(self.handle_paint_request) dialog.exec_() def handle_paint_request(self, printer): self.textEdit.print(printer) def nexts(self): self.pc.click()
class Pentix(QMainWindow): def __init__(self): super().__init__() self.widget = QWidget(self) self.game = Game(10, 22) self.board = board.Board(self, self.game) self.board.resize(self.board.width, self.board.height) self.next_figure = Next(self) self.highscores = read_records() self.statusBar() self.menu = self.menuBar() self.score = QLabel('Your score') self.score.setAlignment(QtCore.Qt.AlignCenter) self.points = QLCDNumber(self) self.best_score = QLabel() self.set_best_score() self.score.setFrameShape(True) self.points.setFrameShape(True) self.best_score.setFrameShape(True) self.create_menu() self.set_window() self.board.statusbar_msg[str].connect(self.statusBar().showMessage) self.statusBar().showMessage('Let\'s start!') self.start() def set_best_score(self): if not self.highscores: self.best_score.setText('Best score is 0') else: self.best_score.setText('Best score is ' + str(self.highscores[0])) def set_window(self): add1 = self.menu.frameGeometry().height() add2 = self.statusBar().frameGeometry().height() self.setFixedSize(self.next_figure.width + self.board.width + 15, self.board.height + add1 + add2) self.center() self.setCentralWidget(self.widget) self.widget.setLayout(self.make_layout()) # self.make_layout() self.setWindowTitle('Pentix') self.setWindowIcon(QIcon('images\icon.png')) self.show() def make_layout(self): _layout = QGridLayout() _layout.setSpacing(3) _layout.addWidget(self.board, 0, 0, 5, 2) _layout.addWidget(self.next_figure, 0, 3, 2, 1) _layout.addWidget(self.score, 2, 3) _layout.addWidget(self.points, 3, 3) _layout.addWidget(self.best_score, 4, 3) return _layout def create_menu(self): self.restart_action = QAction(QIcon('images/restart'), 'Rest', self) self.restart_action.setShortcut('Ctrl+R') self.restart_action.setStatusTip('Restart game') self.restart_action.triggered.connect(self.on_restart_click) self.score_action = QAction('Highscores', self) self.score_action.setShortcut('Ctrl+H') self.score_action.setStatusTip('Show highscore table') self.score_action.triggered.connect(self.on_score_click) self.save_action = QAction(QIcon('images/save.png'), 'Save', self) self.save_action.setStatusTip('Save current game') self.save_action.setShortcut('Ctrl+S') self.save_action.triggered.connect(self.on_save_click) self.open_action = QAction(QIcon('images/open.jpg'), 'Open', self) self.open_action.setStatusTip('Open saved game') self.open_action.setShortcut('Ctrl+O') self.open_action.triggered.connect(self.on_open_click) self.menu.addAction(self.restart_action) self.menu.addAction(self.save_action) self.menu.addAction(self.open_action) self.menu.addAction(self.score_action) def center(self): qr = self.frameGeometry() cp = QDesktopWidget().availableGeometry().center() qr.moveCenter(cp) self.move(qr.topLeft()) def start(self): self.game.start() self.board.timer.start(self.game.speed, self.board) def on_restart_click(self): self.restart() def restart(self, game=None, score=0): self.board.timer.stop() self.highscores = update_records(self.highscores, self.game.score) if game is None: self.game = Game(10, 22) else: self.game = Game(10, 22, game, score) self.board.restart(self.game) self.game.start() self.board.timer.start(self.game.speed, self.board) def on_score_click(self): self.game.pause() QMessageBox.about(self, "Highscores", '\n'.join(map(str, self.highscores))) def on_save_click(self): self.game.pause() filename = QFileDialog.getSaveFileName(self, 'Save file', '/saved')[0] if filename == '': self.statusBar().showMessage('Pause') return board = convert_board_to_str(self.game.board, self.game.width) try: write_to_file(filename, board, self.game.score) except FileNotFoundError as e: print(e) except Exception as e: print(e) self.statusBar().showMessage('Pause') def on_open_click(self): filename = QFileDialog.getOpenFileName(self, 'Open file', '/home')[0] if filename == '': return try: game, score = read_file(filename) except ValueError: sys.stderr.write('Wrong file. Choose another one') except Exception as e: sys.stderr.write(str(e)) self.restart(game, score) def closeEvent(self, event): reply = QMessageBox.question(self, 'Quit', "Are you sure to quit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: self.highscores = update_records(self.highscores, self.game.score) event.accept() else: event.ignore() def on_board_signal(self): self.points.display(self.game.score)
class UiLoginWindow(QWidget): def __init__(self): super().__init__() self.initUI() self.password = "" self.ip = "0.0.0.0:5555" self.sockIn = network.connect_InSocket(address='0.0.0.0', port=5556) self.sockOut = network.connect_OutSocket(address=self.ip.split(':')[0], port=int(self.ip.split(':')[1])) self.time_block, self.chance = read_time() self.login_password_admin, self.login_password_manager, self.banned_admin = self.get_admin_manager() def disconnect_server(self): network.alive = False network.close_sock(self.sockIn) network.close_sock(self.sockOut) def closeEvent(self, QCloseEvent): self.disconnect_server() def get_admin_manager(self): msg = json.dumps({"key": "login"}) network.sock_send(self.sockOut, msg) try: self.sockIn.settimeout(2) data, address = network.read_sock(self.sockIn) self.sockIn.settimeout(None) except socket.timeout: self.info_label.setText('Сервер отключен! Проверьте соединение') self.info_label.resize(self.info_label.sizeHint()) return [{}, {}, {}] msg = json.loads(data) return msg def bad_try_login(self, login, password, time): msg = json.dumps({"key": "bad_try_login", "login": str(login), "password": str(password), "time": str(time)}) network.sock_send(self.sockOut, msg) try: self.sockIn.settimeout(2) data, address = network.read_sock(self.sockIn) self.sockIn.settimeout(None) except socket.timeout: self.info_label.setText('Сервер отключен! Проверьте соединение') self.info_label.resize(self.info_label.sizeHint()) return [{}, {}, {}] msg = json.loads(data) def initUI(self): self.setGeometry(400, 400, 300, 180) self.setWindowTitle('Вход в систему') self.lcdNumber = QLCDNumber(self) self.lcdNumber.setGeometry(QRect(10, 140, 100, 30)) self.lcdNumber.setFrameShape(QFrame.Box) self.info_label = QLabel(self) self.info_label.move(10, 90) self.info_label.resize(self.info_label.sizeHint()) self.info_label.setStyleSheet('color: red') self.login = QLabel("Логин:", self) self.login.move(10, 10) self.login.resize(self.login.sizeHint()) self.password = QLabel("Пароль:", self) self.password.move(10, 40) self.password.resize(self.password.sizeHint()) self.login_line_edit = QLineEdit(self) self.login_line_edit.move(65, 10) self.login_line_edit.resize(200, 20) self.password_line_edit = QLineEdit(self) self.password_line_edit.move(65, 40) self.password_line_edit.resize(200, 20) self.password_line_edit.setEchoMode(QLineEdit.Password) self.go_in = QPushButton("Войти", self) self.go_in.move(60, 60) self.go_in.resize(100, 30) self.go_in.pressed.connect(self.log_in_system) self.back = QPushButton("Отмена", self) self.back.move(150, 60) self.back.resize(100, 30) self.back.pressed.connect(lambda: self.close()) self.timer = QTimer(self) self.timer.timeout.connect(self.showTime) self.lcdNumber.hide() def showTime(self): if self.begin == datetime.strptime(str(self.time_block[-8:]), '%H:%M:%S'): self.timer.stop() self.lcdNumber.hide() self.info_label.setText("Вы опять можете войти в систему") self.info_label.setStyleSheet('color: green') return self.begin = self.begin + timedelta(seconds=1) showing_time = datetime.strptime(str(self.time_block[-8:]), '%H:%M:%S') - \ datetime.strptime(str(self.begin.strftime('%Y-%m-%d %H:%M:%S').split()[1]), '%H:%M:%S') self.lcdNumber.display(str(showing_time).split()[0]) def check_time(self, time_block): time_ = time_block now = str(list(str(datetime.now()).split("."))[0]) date_block = str(list(str(time_block).split())[0]).split("-") date_now = str(list(str(now).split())[0]).split("-") time_block = str(list(str(time_block).split())[1]).split(":") time_now = str(list(str(now).split())[1]).split(":") if (date_block[0] > date_now[0]) or (date_block[0] >= date_now[0] and date_block[1] > date_now[1]) or (date_block[0] >= date_now[0] and date_block[1] >= date_now[1] and date_block[2] >= date_now[2]): if (time_block[0] > time_now[0]) or (time_block[0] >= time_now[0] and time_block[1] > time_now[1]) or (time_block[0] >= time_now[0] and time_block[1] >= time_now[1] and time_block[2] > time_now[2]): return time_ else: return "0000-00-00 00:00:00" else: return "0000-00-00 00:00:00" def add_one_minute(self, time): date_block = str(list(str(time).split())[0]).split("-") time_block = str(list(str(time).split())[1]).split(":") if int(time_block[1]) + 1 < 60: time_block[1] = str(int(time_block[1]) + 1) if len(str(int(time_block[1]) + 1)) == 2 else "0" + str(int(time_block[1]) + 1) elif int(time_block[0]) + 1 < 24: time_block[0] = str(int(time_block[0]) + 1) if len(str(int(time_block[0]) + 1)) == 2 else "0" + str(int(time_block[0]) + 1) elif int(date_block[2]) + 1 < 31: date_block[2] = str(int(date_block[2]) + 1) if len(str(int(date_block[2]) + 1)) == 2 else "0" + str(int(date_block[2]) + 1) return f"{date_block[0]}-{date_block[1]}-{date_block[2]} {time_block[0]}:{time_block[1]}:{time_block[2]}" def log_in_system(self): login = self.login_line_edit.text() password = self.password_line_edit.text() self.time_block = self.check_time(self.time_block) if self.time_block[:10] != "0000-00-00": self.info_label.setText("Подождите вход в систему пока недоступен") self.info_label.resize(self.info_label.sizeHint()) self.info_label.setStyleSheet('color: red') self.lcdNumber.show() self.turn_on_timer() return self.login_password_admin, self.login_password_manager, self.banned_admin = self.get_admin_manager() if self.login_password_admin == {} and self.login_password_manager == {} and self.banned_admin == {}: self.info_label.setText('Сервер отключен! Проверьте соединение') self.info_label.resize(self.info_label.sizeHint()) self.info_label.setStyleSheet('color: red') return if login in self.login_password_admin.keys() and str(self.login_password_admin[login]) == str(password) and \ login not in self.banned_admin.keys(): self.disconnect_server() time_block = str(list(str(datetime.now()).split("."))[0]) chance = "3" write_time(time_block, chance) self.Window = UiAdministratorWindow(login) self.Window.show() UiLoginWindow.close(self) msg = QMessageBox() msg.setWindowTitle("Информация") msg.setText("Добро пожаловать") msg.setInformativeText("Вы вошли в систему как администратор") result = msg.setStandardButtons(QMessageBox.Ok) retval = msg.exec_() elif login in self.login_password_manager.keys() and str(self.login_password_manager[login]) == str(password): self.disconnect_server() time_block = str(list(str(datetime.now()).split("."))[0]) chance = "3" write_time(time_block, chance) self.Window = UiManagerWindow(login) self.Window.show() UiLoginWindow.close(self) msg = QMessageBox() msg.setWindowTitle("Информация") msg.setText("Добро пожаловать") msg.setInformativeText("Вы вошли в систему как управляющий гостиницей") result = msg.setStandardButtons(QMessageBox.Ok) retval = msg.exec_() else: if login in self.banned_admin.keys() and \ login in self.login_password_admin.keys() and self.login_password_admin[login] == password: if self.banned_admin[login]: self.time_and_chances() if self.chance != "3": self.info_label.setText(f"Профиль заблокирован\nПричина: {self.banned_admin[login]}\nКоличество оставшихся попыток: {self.chance}") self.bad_try_login(login, password, datetime.now()) else: self.info_label.setText("Подождите вход в систему пока недоступен") self.lcdNumber.show() self.turn_on_timer() self.info_label.setStyleSheet('color: red') self.info_label.resize(self.info_label.sizeHint()) else: self.time_and_chances() if self.chance != "3": self.info_label.setText(f"Профиль заблокирован\nКоличество оставшихся попыток: {self.chance}") self.bad_try_login(login, password, datetime.now()) else: self.info_label.setText("Подождите вход в систему пока недоступен") self.lcdNumber.show() self.turn_on_timer() self.info_label.setStyleSheet('color: red') self.info_label.resize(self.info_label.sizeHint()) else: self.time_and_chances() if self.chance != "3": self.info_label.setText(f"Профиль или пароль введены неверно\nКоличество оставшихся попыток: {self.chance}") self.bad_try_login(login, password, datetime.now()) else: self.info_label.setText("Подождите вход в систему пока недоступен") self.lcdNumber.show() self.turn_on_timer() self.info_label.setStyleSheet('color: red') self.info_label.resize(self.info_label.sizeHint()) def time_and_chances(self): self.chance = str(int(self.chance) - 1) if self.chance == "0": self.time_block = self.add_one_minute(str(list(str(datetime.now()).split("."))[0])) self.chance = "3" write_time(self.time_block, self.chance) def turn_on_timer(self): self.timer.start(1000) self.begin = datetime.strptime(str(datetime.now().strftime('%Y-%m-%d %H:%M:%S').split()[1]), '%H:%M:%S')
class Temp(QWidget): def __init__(self, parent): super(Temp, self).__init__(parent) self.arguments = Arg_Class() self.mcTempValue = 0 self.motorTempValue = 0 self.highMotorTempValue = 0 self.highCellTempValue = 0 self.lowCellTempValue = 0 self.mcTempGauge = QLCDNumber(self) self.mcTempGauge.display(str(self.mcTempValue).zfill(1)) self.mcTempGauge.move(0,0) self.mcTempGauge.resize(70,60) self.mcTempGauge.setFrameShape(QFrame.NoFrame) self.mcTempGauge.setSegmentStyle(QLCDNumber.Flat) self.mcTemplabel = QLabel(self) self.mcTemplabel.setText("highest mc temp: ") self.mcTemplabel.move(0,0) self.motorTempGauge = QLCDNumber(self) self.motorTempGauge.display(str(self.motorTempValue).zfill(1)) self.motorTempGauge.move(0,50) self.motorTempGauge.resize(70,60) self.motorTempGauge.setFrameShape(QFrame.NoFrame) self.motorTempGauge.setSegmentStyle(QLCDNumber.Flat) self.motorTemplabel = QLabel(self) self.motorTemplabel.setText("motor temp: ") self.motorTemplabel.move(0,50) self.highMotorTempGauge = QLCDNumber(self) self.highMotorTempGauge.display(str(self.highMotorTempValue).zfill(1)) self.highMotorTempGauge.move(0,100) self.highMotorTempGauge.resize(70,60) self.highMotorTempGauge.setFrameShape(QFrame.NoFrame) self.highMotorTempGauge.setSegmentStyle(QLCDNumber.Flat) self.highMotorTemplabel = QLabel(self) self.highMotorTemplabel.setText("highest motor temp: ") self.highMotorTemplabel.move(0,100) self.highCellTempGauge = QLCDNumber(self) self.highCellTempGauge.display(str(self.highCellTempValue).zfill(1)) self.highCellTempGauge.move(0,150) self.highCellTempGauge.resize(70,60) self.highCellTempGauge.setFrameShape(QFrame.NoFrame) self.highCellTempGauge.setSegmentStyle(QLCDNumber.Flat) self.highCellTemplabel = QLabel(self) self.highCellTemplabel.setText("highest cell temp: ") self.highCellTemplabel.move(0,150) self.lowCellTempGauge = QLCDNumber(self) self.lowCellTempGauge.display(str(self.lowCellTempValue).zfill(1)) self.lowCellTempGauge.move(0,200) self.lowCellTempGauge.resize(70,60) self.lowCellTempGauge.setFrameShape(QFrame.NoFrame) self.lowCellTempGauge.setSegmentStyle(QLCDNumber.Flat) self.lowCellTemplabel = QLabel(self) self.lowCellTemplabel.setText("lowest cell temp: ") self.lowCellTemplabel.move(0,200) @pyqtSlot(float) def mcTemp_update(self, value): self.mcTempGauge.display(value) @pyqtSlot(float) def motorTemp_update(self, value): self.motorTempGauge.display(value) @pyqtSlot(float) def highMotorTemp_update(self, value): self.highMotorTempGauge.display(value) @pyqtSlot(float) def highCellTemp_update(self, value): self.highCellTempGauge.display(value) @pyqtSlot(float) def lowCellTemp_update(self, value): self.lowCellTempGauge.display(value)
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
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(784, 600) self.centralwidget = QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.Time = QLCDNumber(self.centralwidget) self.Time.setGeometry(QRect(260, 80, 271, 121)) self.Time.setFrameShape(QFrame.Box) self.Time.setFrameShadow(QFrame.Sunken) self.Time.setLineWidth(1) self.Time.setMidLineWidth(0) self.Time.setSmallDecimalPoint(False) self.Time.setDigitCount(8) self.Time.setObjectName("lcdNumber") self.label = QLabel(self.centralwidget) self.label.setGeometry(QRect(220, 0, 341, 61)) font = QFont() font.setBold(False) font.setWeight(50) self.label.setFont(font) self.label.setFocusPolicy(Qt.NoFocus) self.label.setFrameShape(QFrame.NoFrame) self.label.setTextFormat(Qt.AutoText) self.label.setScaledContents(False) self.label.setAlignment(Qt.AlignCenter) self.label.setIndent(-1) self.label.setObjectName("label") self.line = QFrame(self.centralwidget) self.line.setGeometry(QRect(0, 40, 831, 31)) self.line.setFrameShape(QFrame.HLine) self.line.setFrameShadow(QFrame.Sunken) self.line.setObjectName("line") self.line_2 = QFrame(self.centralwidget) self.line_2.setGeometry(QRect(0, 220, 801, 31)) self.line_2.setFrameShape(QFrame.HLine) self.line_2.setFrameShadow(QFrame.Sunken) self.line_2.setObjectName("line_2") self.Melody = QPushButton(self.centralwidget) self.Melody.setGeometry(QRect(-270, 240, 1091, 61)) self.Melody.setObjectName("pushButton") self.Pause = QPushButton(self.centralwidget) self.Pause.setGeometry(QRect(520, 370, 81, 81)) self.Pause.setDefault(True) self.Pause.setFlat(False) self.Pause.setObjectName("pushButton_2") self.Stop = QPushButton(self.centralwidget) self.Stop.setGeometry(QRect(190, 370, 81, 81)) self.Stop.setDefault(True) self.Stop.setObjectName("pushButton_3") MainWindow.setCentralWidget(self.centralwidget) self.menubar = QMenuBar(MainWindow) self.menubar.setGeometry(QRect(0, 0, 784, 21)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) self.label.setText(_translate("MainWindow", "Таймер")) self.Melody.setText(_translate("MainWindow", "Рингтон")) self.Pause.setText(_translate("MainWindow", "Пауза")) self.Stop.setText(_translate("MainWindow", "Отмена"))