class MainWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.ui = Ui_MainWindow() self.ui.setupUi(self) # Pirs's functions self.threadPirs = QtCore.QThread() self.Pirs = Assistant() self.Pirs.moveToThread(self.threadPirs) self.ui.pushButton_2.clicked.connect(self.Pirs.voice_activation) self.ui.pushButton_2.clicked.connect(self.modePirs) self.threadPirs.start() ## REMOVE ==> STANDARD TITLE BAR UIFunctions.removeTitleBar(True) ## ==> END ## ## REMOVE ==> STANDARD TITLE BAR startSize = QSize(1000, 720) self.resize(startSize) self.setMinimumSize(startSize) # UIFunctions.enableMaximumSize(self, 500, 720) ## ==> END ## # TRAY MENU self.tray_icon = QSystemTrayIcon(self) self.tray_icon.setIcon(QtGui.QIcon(r"gui\icons\tray_logo.ico")) show_action = QAction("Show", self) quit_action = QAction("Exit", self) hide_action = QAction("Hide", self) show_action.triggered.connect(self.show) hide_action.triggered.connect(self.hide) quit_action.triggered.connect(self.closeApp) tray_menu = QMenu() tray_menu.addAction(show_action) tray_menu.addAction(hide_action) tray_menu.addAction(quit_action) self.tray_icon.setContextMenu(tray_menu) self.tray_icon.show() ## TOGGLE/BURGUER MENU ######################################################################## self.ui.btn_toggle_menu.clicked.connect(lambda: UIFunctions.toggleMenu(self, 250, True)) ## ==> START PAGE self.ui.stackedWidget.setCurrentWidget(self.ui.page_home) ## ==> END ## ## PAGES ######################################################################## # PAGE 1 self.ui.btn_home.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_home)) # PAGE 2 self.ui.btn_user.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_user)) # PAGE 3 self.ui.btn_settings.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_settings)) # PAGE 4 self.ui.pushButton_6.clicked.connect(lambda: self.ui.stackedWidget.setCurrentWidget(self.ui.page_phrases)) self.ui.pushButton_6.clicked.connect(self.feedLabel) # MOUSE CLICK HANDING def mouseClick(event): if event.buttons() == Qt.LeftButton: self.start = event.pos() # MOVE MAIN WINDOW def moveWindow(event): if event.buttons() == Qt.LeftButton: self.delta = event.globalPos() - self.pos() - QtCore.QPoint(80, 10) self.move(self.pos() + self.delta - self.start) self.ui.frame_label_top_btns.mousePressEvent = mouseClick self.ui.frame_label_top_btns.mouseMoveEvent = moveWindow # GET COMMANDS self.ui.pushButton.clicked.connect(self.getCommandSite) self.ui.pushButton_4.clicked.connect(self.getNewName) self.ui.pushButton_5.clicked.connect(self.getCommandFolder) # CHANGE VOLUME self.ui.horizontalSlider.setMaximum(100) self.ui.horizontalSlider.setValue(100) self.ui.progressBar.setValue(100) self.ui.horizontalSlider.valueChanged.connect(self.valueSpeaker) self.ui.horizontalSlider.valueChanged[int].connect(self.changeVolume) ## ==> LOAD DEFINITIONS ######################################################################## UIFunctions.uiDefinitions(self) ## ==> END ## ## SHOW ==> MAIN WINDOW ######################################################################## self.show() ## ==> END ## # USER COMANDS def getCommandSite(self): url = self.ui.lineEdit.text() command = self.ui.lineEdit_2.text() if command != "" and url != "": self.ui.warning_1.setText("") url.lower() command.lower() with open("commands.txt", "a") as file: file.write(url + ";" + command + "\n") self.ui.lineEdit.clear() self.ui.lineEdit_2.clear() else: self.ui.warning_1.setText("Не все поля были заполнены") def getCommandFolder(self): url = self.ui.lineEdit_3.text() command = self.ui.lineEdit_4.text() if command != "" and url != "": self.ui.warning_2.setText("") url.lower() command.lower() with open("commands.txt", "a") as file: file.write(url + ";" + command + "\n") self.ui.lineEdit_3.clear() self.ui.lineEdit_4.clear() else: self.ui.warning_2.setText("Не все поля были заполнены") def getNewName(self): newName = self.ui.editName.text() if newName != "": newName.lower() self.ui.editName.clear() self.Pirs.changeName(newName) def changeVolume(self, value): sessions = AudioUtilities.GetAllSessions() for session in sessions: volume = session.SimpleAudioVolume if session.Process and session.Process.name() == "python.exe": volume.SetMasterVolume(value * 0.01, None) def valueSpeaker(self): self.ui.progressBar.setValue(self.ui.horizontalSlider.value()) def feedLabel(self): self.Pirs.feedDict(self.Pirs.tasks) i = 1 text = "" for key, value in self.Pirs.tasks.items(): text += str(i) + ". " for k in key: text += k + ", " text = text[:-2] if isinstance(value, str): text += ": " + value text += "\n" i+=1 self.ui.label_4.setText(text) def modePirs(self): if self.Pirs.rc.flag: self.Pirs.rc.flag = False self.ui.label_6.setText("Дезактивирован") self.ui.label_6.setStyleSheet("color: rgb(98, 114, 164);") else: self.Pirs.rc.flag = True self.ui.label_6.setText("Активирован") self.ui.label_6.setStyleSheet("color: qlineargradient(spread:pad, x1:0, y1:0.511364, x2:1, y2:0.523, stop:0 rgba(254, 121, 199, 255), stop:1 rgba(170, 85, 255, 255));") def closeApp(self): self.threadPirs.exit() self.threadPirs.terminate() self.threadPirs.wait(250) self.close() self.Pirs.bye()