コード例 #1
0
 def au(self, acc, paw):
     u = UserManage()
     u.addUser(acc, paw)
     er = QErrorMessage(self)
     er.setWindowTitle("提示")
     er.showMessage("添加成功!")
     er.show()
     self.showAll()
コード例 #2
0
 def pay(self, data):
     c = ZhuanzhangNote()
     c.addNote(data)
     d = CreditAbout()
     d.setPayed(self.cid)
     self.showAll()
     mes = QErrorMessage(self)
     mes.setWindowTitle("提示")
     mes.showMessage("支付成功!")
     mes.show()
コード例 #3
0
 def finish(self):
     name = self.lineEdit.text()
     num = self.spinBox.value()
     price = re.findall("[\d.]+", self.lineEdit_3.text())[0]
     if name and num and price:
         self.finish_signal.emit([name, int(num), float(price)])
         self.close()
     else:
         mes = QErrorMessage(self)
         mes.setWindowTitle("提示")
         mes.showMessage("请输入完整内容!")
         mes.show()
コード例 #4
0
ファイル: ClientManage.py プロジェクト: easyprogramer/scmisPy
 def delClient(self):
     try:
         index = self.tableView.currentIndex().row()
         self.data.pop(index)
         self.showTable()
         mes = QErrorMessage(self)
         mes.setWindowTitle("提示")
         mes.showMessage("删除成功!")
         mes.show()
     except Exception as ret:
         print(ret)
         mes = QErrorMessage(self)
         mes.setWindowTitle("提示")
         mes.showMessage("删除失败!")
         mes.show()
コード例 #5
0
 def onPay(self):
     print("支付")
     try:
         index = self.tableView.currentIndex().row()
         self.cid = self.data[index][0]
         zid = self.cid.replace('H', 'Z')
         self.paydialog = PayDialog(self.data[index][2], zid)
         self.paydialog.show()
         self.paydialog.finish_signal.connect(self.pay)
     except Exception as ret:
         print(ret)
         mes = QErrorMessage(self)
         mes.setWindowTitle("提示")
         mes.showMessage("支付失败")
         mes.show()
コード例 #6
0
ファイル: DelContract.py プロジェクト: easyprogramer/scmisPy
	def delContract(self, c):
		"""删除合同"""
		try:
			index = self.tableView.currentIndex().row()
			cid = self.data[index][0]
			c = CreditAbout()
			res = c.delcontract(cid)
			if res:
				self.data.pop(index)
				self.showTable()
		except Exception as ret:
			print(ret)
			mes = QErrorMessage(self)
			mes.setWindowTitle("提示")
			mes.showMessage("删除失败")
			mes.show()
コード例 #7
0
 def _saveCfgFile(self,file):
     try:
         self.fileDialog.close()
     except: pass
     try:
         self.config.config["version"] = self.config.config["version"] + 1
         self.config.save(file)
         
         self.mainWindow.statusbar.showMessage("Saved Configufration File: {0}.".format(file),5000)
         
         
     except:
         err = QErrorMessage(self.window)
         err.showMessage("Unable to save config file.")
         err.setModal(True)
         err.show()
コード例 #8
0
 def findContract(self):
     print("查找")
     ty = self.dic[self.comboBox.currentIndex()]
     d = self.lineEdit.text()
     if d:
         c = CreditAbout()
         self.data = c.getList(ty, d)
         self.showTable()
         mes = QErrorMessage(self)
         mes.setWindowTitle("提示")
         mes.showMessage("共找到{}条数据".format(len(self.data)))
         mes.show()
         return
     mes = QErrorMessage(self)
     mes.setWindowTitle("提示")
     mes.showMessage("查找失败!请输入正确格式!")
     mes.show()
コード例 #9
0
ファイル: PreviewPane.py プロジェクト: easyprogramer/scmisPy
 def print(self):
     path = QFileDialog.getSaveFileName(parent=self,
                                        caption="选择导出位置",
                                        filter='*.pdf')[0]
     if path:
         try:
             self.web.page().printToPdf(path)
             mes = QErrorMessage(self)
             mes.setWindowTitle("提示")
             mes.showMessage("导出成功!")
             mes.show()
             return
         except Exception as ret:
             print(ret)
     mes = QErrorMessage(self)
     mes.setWindowTitle("提示")
     mes.showMessage("导出失败!")
     mes.show()
コード例 #10
0
 def onPay(self):
     print("开票")
     try:
         index = self.tableView.currentIndex().row()
         self.cid = self.data[index][0]
         zid = self.cid.replace('H', 'P')
         self.kaipiaodialog = KaipaioDialog([
             zid, self.data[index][6], self.data[index][7],
             self.data[index][8]
         ])
         self.kaipiaodialog.show()
         self.kaipiaodialog.finish_signal.connect(self.pay)
     except Exception as ret:
         print(ret)
         mes = QErrorMessage(self)
         mes.setWindowTitle("提示")
         mes.showMessage("支付失败")
         mes.show()
コード例 #11
0
 def _openCfgFile(self,file):
     self.config.locked = True
     try:
         self.fileDialog.close()
     except: pass
     try:
         self.config.load(file)
         self.mainWindow.statusbar.showMessage("Loaded Configufration File: {0}.".format(file),5000)
         self.syncConfigToUI()
         self.toggleNetParams()
         
     except:
         err = QErrorMessage(self.window)
         err.showMessage("Unable to parse config file.")
         err.setModal(True)
         err.show()
     self.config.locked = False
     self.autoExec()
	def on_launch_click(self):

		launch_subject_list = []
		
		selection = self.tableWidget.selectionModel()

		for selected in selection.selectedRows():
			launch_subject_list.append(self.subject_list[selected.row()])

		if len(launch_subject_list) < 1:
			error_dialog = QErrorMessage(self)
			error_dialog.showMessage("No selected rows!\nTo launch processing, please select the rows for the sessions/scans you want to launch.")
			error_dialog.show()
			
		else:
			if self._login.exec_() == QDialog.Accepted:
				SubmitStructuralPreprocessingHandEditBatch.do_submissions(
					self._login.username, self._login.password, launch_subject_list)
				self.on_refresh_click()	
コード例 #13
0
class PlansWindow(QWidget):
    """Класс, который показывает планы пользоваетеля"""

    def __init__(self):
        super().__init__()
        uic.loadUi('toggl_plans.ui', self)
        cursor.execute(f"SELECT plan FROM plans WHERE user_id = '{user_id}'")
        plans0 = cursor.fetchall()
        plans = []
        for plan in plans0:
            plans.append(plan[0])
        self.plans_scroll_area = QScrollArea(self)
        self.plans_scroll_area.resize(461, 351)
        self.plans_scroll_area.move(10, 120)
        self.scrollAreaWidgetContents2 = QWidget()
        self.scrollAreaWidgetContents2.setMinimumSize(455, 345)
        self.plans_grid = QGridLayout(self.scrollAreaWidgetContents2)
        self.plans_dict = {}
        self.add_button.clicked.connect(self.add_plan)
        self.list_of_plans = plans
        self.display_plans()

    def display_plans(self):
        """Функция, которая выводит список планов в ScrollArea"""
        self.plans_scroll_area = QScrollArea(self)
        self.plans_scroll_area.resize(461, 351)
        self.plans_scroll_area.move(10, 120)
        self.plans_scroll_area.setStyleSheet("background-color: white")
        self.scrollAreaWidgetContents2 = QWidget()
        self.scrollAreaWidgetContents2.setMinimumSize(455, 345)
        self.plans_grid = QGridLayout(self.scrollAreaWidgetContents2)
        self.reserved_plans = self.list_of_plans[::-1]
        n = 0
        for plan in self.reserved_plans:
            if plan == '':
                continue
            else:
                plan_label = QLabel(plan)
                plan_label.setFont(QtGui.QFont('Bahnschrift Light SemiCondensed', 15))
                check_box = QCheckBox()
                check_box.resize(20, 20)
                self.plans_grid.addWidget(check_box, n, 0)
                self.plans_grid.addWidget(plan_label, n, 1)
                n += 1
                self.plans_dict[check_box] = plan_label
                check_box.stateChanged.connect(self.delete_plan)
        self.plans_scroll_area.setAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop)
        self.plans_scroll_area.setWidget(self.scrollAreaWidgetContents2)
        self.plans_scroll_area.show()

    def add_plan(self):
        """Функция, которая добавляет новые планы"""
        if self.current_plan.text() == '':
            self.error_dialog = QErrorMessage()
            self.error_dialog.showMessage('Вам нужно обязательно ввести что-нибудь в поле.')
            self.error_dialog.show()
            return
        else:
            plan_text = self.current_plan.text()
            cursor.execute(f"INSERT INTO plans VALUES (?, ?)", (user_id, plan_text))
            data_base.commit()
            self.list_of_plans.append(self.current_plan.text())
            self.display_plans()
            self.current_plan.setText('')

    def delete_plan(self):
        """Функция, которая удаляет планы из списка"""
        sender = self.sender()
        plan_to_delete = self.plans_dict[sender]
        self.list_of_plans.remove(plan_to_delete.text())
        cursor.execute(f"DELETE FROM plans WHERE plan = '{plan_to_delete.text()}'")
        data_base.commit()
        self.display_plans()
コード例 #14
0
    def on_error(self, msg):
        error = QErrorMessage(self)
        error.showMessage(msg)
        error.show()

        self.btn_login.setEnabled(True)
コード例 #15
0
class MyWidget(QMainWindow):
    """Класс основного окна программы"""

    def __init__(self):
        super().__init__()
        uic.loadUi('toggl_app.ui', self)
        self.setWindowTitle("Toggl")
        self.setFixedSize(1062, 676)
        self.history_list = []

        self.color = ''

        self.select_color.move(640, 60)

        self.insights_button.clicked.connect(self.view_insights)
        self.plans_button.clicked.connect(self.view_plans)

        self.no_color.toggle()
        self.no_color.clicked.connect(self.no_color_clicked)
        self.select_color.clicked.connect(self.color_selection)

        self.time = 0
        self.timeInterval = 1000

        self.timerUp = QTimer()
        self.timerUp.setInterval(self.timeInterval)
        self.timerUp.timeout.connect(self.updateUptime)

        self.start.clicked.connect(self.timerUp.start)
        self.start.clicked.connect(self.current_time)
        self.pause.clicked.connect(self.timerUp.stop)
        self.stop.clicked.connect(self.check_timers)

        self.data_table.setColumnCount(6)
        self.data_table.setHorizontalHeaderLabels(["Начало", "Задача", "Тэг", "Цвет", "Длительность", "Продолжить"])

    def continue_task(self, timer):
        """Функция, которая создаёт таймеры"""
        sender = self.sender()
        timer0 = timer
        global flag
        if sender.isChecked():
            flag = True
            timer0.start_timer()
        else:
            flag = False
            timer0.stop_timer()

    def add_content(self, data):
        """Функция, которая добавляет данные в таблицу"""
        self.data_table.setVisible(True)
        self.data_table.setRowCount(len(data))
        row_id = 0
        for row in data:
            for i in range(6):
                if i == 3:
                    color = row[4]
                    if color == '#ffffff':
                        color_label = QLabel('○')
                    else:
                        color_label = QLabel(f'<h1 style="color: {color};">●')
                    self.data_table.setCellWidget(row_id, 3, color_label)
                elif i == 5:
                    btn = QCheckBox()
                    cursor.execute(f"UPDATE data SET checkbox = '{btn}' WHERE start_time = '{row[1]}'")
                    data_base.commit()
                    cb_timer = Timers(btn, row_id, i - 1, self.data_table)
                    btn.stateChanged.connect(partial(self.continue_task, timer=cb_timer))
                    self.data_table.setCellWidget(row_id, 5, btn)
                else:
                    self.data_table.setItem(row_id, i, QTableWidgetItem(str(row[i + 1])))
            row_id += 1
        self.data_table.resizeColumnsToContents()
        self.data_table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.data_table.update()

    def start_func(self):
        """Функция, которая выводит данные пользователя, если они уже есть"""
        cursor.execute(f"SELECT * FROM data WHERE user_id = '{user_id}'")
        data = cursor.fetchall()
        if len(data) == 0:
            self.data_table.setVisible(False)
            self.start_text.setStyleSheet("color: rgb(0, 0, 0)")
        else:
            self.add_content(data[::-1])

    def view_insights(self):
        """Функция, которая запускает окно со статистикой"""
        self.insights_window = InsightsWindow()
        self.insights_window.setWindowTitle('Статистика')
        self.insights_window.setFixedSize(570, 385)
        self.insights_window.show()

    def view_plans(self):
        """Функия, которая запускает окно с планами"""
        self.plans_window = PlansWindow()
        self.plans_window.setWindowTitle('Ваши планы')
        self.plans_window.setFixedSize(480, 490)
        self.plans_window.show()

    def current_time(self):
        """Функция, которая регистрирует время начала выполнения задачи"""
        if '' == self.task.text():
            self.error_dialog = QErrorMessage()
            self.error_dialog.showMessage('Вам нужно обязательно ввести название задачи.')
            self.error_dialog.show()
            self.timerUp.stop()
            self.reset()
            return
        else:
            self.start_time = datetime.datetime.now()
            self.start_time = self.start_time.strftime("%d-%m-%Y %H:%M:%S")

    def check_timers(self):
        if flag == True:
            self.error_dialog = QErrorMessage()
            self.error_dialog.showMessage('Сначала остановите другие таймеры.')
            self.error_dialog.show()
            return
        else:
            self.timerUp.stop()
            self.newtask()
            self.reset()


    def updateUptime(self):
        """Функция, которая обновляет таймер"""
        self.time += 1
        self.settimer(self.time)

    def settimer(self, int):
        """Функция, которая передаёт значения таймера в Label"""
        self.time = int
        self.timelabel.setText(time.strftime('%H:%M:%S', time.gmtime(self.time)))

    def reset(self):
        """Функция, которая сбивает таймер"""
        self.time = 0
        self.settimer(self.time)

    def newtask(self):
        """Функция, которая добавляет новую задачу"""
        if '00:00:00' == self.timelabel.text() or '' == self.task.text():
            return
        else:
            if self.no_color.isChecked():
                self.color = '#ffffff'
            data_list = [user_id, self.start_time, self.task.text(), '#' + self.tag.text(),
                 self.color, time.strftime("%H:%M:%S", time.gmtime(self.time)), '']
            self.selected_color.setStyleSheet("color: rgb(127, 127, 127)")
            cursor.execute("INSERT INTO data VALUES (?, ?, ?, ?, ?, ?, ?)", (data_list))
            data_base.commit()
            cursor.execute(f"SELECT * FROM data WHERE user_id = '{user_id}'")
            data = cursor.fetchall()
            self.add_content(data[::-1])
            self.history_list.append(data_list[1:-1])
            self.task.setText('')
            self.tag.setText('')
            if not self.no_color.isChecked():
                self.no_color.toggle()

    def no_color_clicked(self):
        """Функция, которая прячет Label с выбранным цветом, если выбран параметр 'без цвета'"""
        self.selected_color.setStyleSheet("color: rgb(127, 127, 127)")

    def color_selection(self):
        """Функция, которая запускает окно выбора цвета"""
        color = QColorDialog.getColor()
        try:
            self.color = color.name()
            self.selected_color.setStyleSheet(f"color: {color.name()}")
            if self.no_color.isChecked():
                self.no_color.toggle()
        except TypeError:
            self.error_dialog = QErrorMessage()
            self.error_dialog.showMessage('Произошла ошибка. Видимо, такого цвета не существует')
            self.error_dialog.show()
コード例 #16
0
ファイル: gui_main.py プロジェクト: ASlilith/PythonMyoLinux
class TopLevel(QWidget):
    """
        Main window containing all GUI components.
    """

    #
    # Used to cleanup background worker thread(s) (on exit)
    #
    class Exit(QObject):
        exitClicked = pyqtSignal()

    def closeEvent(self, event):
        self.close_event.exitClicked.emit()

    def __init__(self):
        super().__init__()

        self.close_event = self.Exit()  # Thread cleanup on exit
        self.close_event.exitClicked.connect(self.stop_background_workers)

        # Configurable
        self.worker_check_period = 1  # seconds

        self.init_ui()

    def init_online_pred_tab(self):
        """
            Initializes UI elements in the "Online Predictions" tab

        :return: (QWidget) online_training_tab
        """
        online_pred_tab = QWidget()
        return online_pred_tab

    def init_ui(self):
        """
            Initializes the top-level tab widget and all sub tabs ("Data", "Training", "Testing")
        """
        self.setGeometry(0, 0, 1100, 800)
        self.setWindowTitle('Myo Tools')
        self.setObjectName("TopWidget")
        self.setStyleSheet("#TopWidget {background-color: white;}")

        #
        # Top-level layout
        #
        tools_layout = QVBoxLayout()
        self.tool_tabs = QTabWidget()

        # Fancy styling
        tab_widgets = self.tool_tabs.findChild(QStackedWidget)
        tab_widgets.setObjectName("TabWidgets")
        tools_layout.addWidget(self.tool_tabs)
        top_tabs = self.tool_tabs.findChild(QTabBar)
        top_tabs.setObjectName("TopTabs")
        self.tool_tabs.setStyleSheet(
            "QTabBar#TopTabs::tab {font-weight: bold; height:35px; width: 150px; border-radius: 3px; "
            "                   border: 2px solid #bbbbbb; background-color:#dddddd;}"
            "QStackedWidget#TabWidgets {background-color: #eeeeee;}")
        self.tool_tabs.currentChanged.connect(self.on_tab_changed)
        self.cur_index = 0

        self.data_tools_tab = DataTools(self.on_device_connected,
                                        self.on_device_disconnected,
                                        self.is_data_tools_open)
        self.online_training_tab = OnlineTraining(
            self.data_tools_tab.data_collected)
        self.online_pred_tab = OnlineTesting(
            self.data_tools_tab.data_collected)

        self.tool_tabs.addTab(self.data_tools_tab, "Data Collection")
        self.tool_tabs.addTab(self.online_training_tab, "Online Training")
        self.tool_tabs.addTab(self.online_pred_tab, "Online Predictions")

        self.setLayout(tools_layout)
        self.show()

    def is_data_tools_open(self):
        return self.cur_index == 0

    def on_device_connected(self, address, rssi, battery_level):
        """
            Called on user initiated connection

        :param address: MAC address of connected Myo device
        """
        self.online_pred_tab.device_connected(address, rssi, battery_level)
        self.online_training_tab.device_connected(address, rssi, battery_level)

    def on_device_disconnected(self, address):
        """
            Called on user initiated disconnect, or unexpected disconnect

        :param address: MAC address of disconnected Myo device
        """
        self.online_pred_tab.device_disconnected(address)
        self.online_training_tab.device_disconnected(address)

    def on_tab_changed(self, value):
        """
            Intercepts a user attempting to switch tabs (to ensure a valid tab switch is taking place)

            value: Desired tab index to switch to
        """
        if self.cur_index == value:
            return
        valid_switch = False

        #
        # Determine if we can switch
        #
        data_tool_idx = 0
        online_train_idx = 1
        online_pred_idx = 2

        if self.cur_index == data_tool_idx:
            #
            # Check for incomplete Myo search workers
            #
            waiting_on_search = False
            for worker in self.data_tools_tab.search_threads:
                if not worker.complete:
                    waiting_on_search = True
                    break

            if not waiting_on_search:

                #
                # Check for background data workers
                #

                # worker_running  = False
                # num_widgets     = self.data_tools_tab.ports_found.count()
                #
                # for idx in range(num_widgets):
                #     # Ignore port widgets (only interested in Myo device rows)
                #     list_widget = self.data_tools_tab.ports_found.item(idx)
                #     if hasattr(list_widget, "port_idx"):
                #         continue
                #
                #     myo_widget = self.data_tools_tab.ports_found.itemWidget(list_widget)
                #     if not (myo_widget.worker is None):
                #         if not myo_widget.worker.complete:
                #             worker_running = True
                #             break
                worker_running = False

                if not worker_running:

                    #
                    # Close the background video worker if appropriate
                    #

                    # if not self.data_tools_tab.gt_helper_open:
                    #     if not (self.data_tools_tab.gt_helper.worker is None):
                    #         self.data_tools_tab.gt_helper.stop_videos()
                    #
                    #         while not (self.data_tools_tab.gt_helper.worker.complete):
                    #             time.sleep(self.worker_check_period)
                    #
                    #     #
                    #     # IF we make it here, the switch is valid (for the case of the data tools tab)
                    #     #
                    #     valid_switch = True
                    # else:
                    #     self.warn_user("Please close GT Helper first.")

                    valid_switch = True

                else:
                    self.warn_user(
                        "Please close connection to Myo devices first.")
            else:
                self.warn_user(
                    "Please wait for Myo device search to complete first.")

        #
        # To control switching out of online training / testing
        #
        elif self.cur_index == online_train_idx:
            valid_switch = True
        elif self.cur_index == online_pred_idx:
            valid_switch = True

        if valid_switch:
            self.cur_index = value
        else:
            self.tool_tabs.setCurrentIndex(self.cur_index)

    def stop_background_workers(self):
        """
            This function is called on (user click-initiated) exit of the main window.
        """
        self.data_tools_tab.stop_data_tools_workers()

    def warn_user(self, message):
        """
            Generates a pop-up warning message

        :param message: The text to display
        """
        self.warning = QErrorMessage()
        self.warning.showMessage(message)
        self.warning.show()
コード例 #17
0
 def popup(self, e):
     """As seen at: https://stackoverflow.com/questions/40227047/
     python-pyqt5-how-to-show-an-error-message-with-pyqt5"""
     error_dialog = QErrorMessage(self)
     error_dialog.showMessage(e.text)
     error_dialog.show()