Ejemplo n.º 1
0
    def init_action_attribute(self):
        action_h_box_layout = QHBoxLayout()
        action_h_box_layout.setGeometry(QRect(0, 0, 0, 0))
        action_h_box_layout.setAlignment(QtCore.Qt.AlignRight)
        self.action_group_box.setStyleSheet("color: white;" "font-size: 20px;")

        execute_button = QPushButton("Execute")
        execute_alternative_scenario_button = QPushButton(
            "Execute with Alternative Scenario")
        execute_button.setStyleSheet("""
                                    QPushButton
                                    {
                                        background-color: #5b5c5e;
                                        padding: 2px;
                                        min-height: 45px;
                                        min-width: 45px;
                                        border-radius: 10px;
                                        border-bottom: 1.5px solid black;
                                        border-right: 1px solid black;
                                    }
                                    QPushButton:hover:!pressed
                                        {
                                          background-color: #4d4d4d;
                                        }
                                    QPushButton:pressed
                                        {
                                          background-color: #5b5c5e;
                                          border: 1px solid black;
                                        }
                                """)

        execute_alternative_scenario_button.setStyleSheet("""
                                    QPushButton
                                    {
                                        background-color: #5b5c5e;
                                        padding: 2px;
                                        min-height: 45px;
                                        min-width: 45px;
                                        border-radius: 10px;
                                        border-bottom: 1.5px solid black;
                                        border-right: 1px solid black;
                                    }
                                    QPushButton:hover:!pressed
                                        {
                                          background-color: #4d4d4d;
                                        }
                                    QPushButton:pressed
                                        {
                                          background-color: #5b5c5e;
                                          border: 1px solid black;
                                        }
                                """)

        execute_button.clicked.connect(self.execute_click)
        execute_alternative_scenario_button.clicked.connect(self.execute_alter)

        action_h_box_layout.addWidget(execute_alternative_scenario_button)
        action_h_box_layout.addWidget(execute_button)
        self.action_group_box.setLayout(action_h_box_layout)
Ejemplo n.º 2
0
    def initWidget(self, ips):
        self.statusInfo = {}
        self.isStartWatch = False
        self.currentIP = None
        self.isMQConnected = False
        self.mMQClient = mqtt.Client(client_id='dtu-online-check-tool-tanxing-debug')
        self.timer = QTimer()
        vbox = QVBoxLayout()
        self.remind = QLabel("提示:从文件中导入DTU地址!")
        self.isImportData = False
        vbox.addWidget(self.remind)
        self.scrollArea = QScrollArea()
        self.scrollArea.setWidgetResizable(True)
        self.scrollAreaWidgetContents = QWidget()
        self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 388, 313))
        h1box = QHBoxLayout()
        line = QFrame()
        line.setFrameShape(QFrame.HLine)
        line.setGeometry(QRect(40, 180, 400, 3))
        addrLabel = QLabel("设备地址")
        h1box.addWidget(addrLabel)
        addrLabel.setAlignment(Qt.AlignCenter)
        onLineLabel = QLabel("在线状态   ")
        h1box.addWidget(onLineLabel)
        onLineLabel.setAlignment(Qt.AlignCenter)
        if isShowTime:
            timeLabel = QLabel("时间")
            timeLabel.setAlignment(Qt.AlignCenter)
            h1box.addWidget(timeLabel)
        h1box.setGeometry(QRect(0, 0, 100, 313))
        vbox.addLayout(h1box)

        self.svbox = QVBoxLayout(self.scrollAreaWidgetContents)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        vbox.addWidget(self.scrollArea)
        bootmbox = QHBoxLayout()
        bootmbox.addWidget(QLabel("离线间隔"))
        self.comBox = QComboBox()
        bootmbox.addWidget(self.comBox)
        self.comBox.addItems(timeSpanList)
        bootmbox.addWidget(QLabel("分"))
        bootombox = QHBoxLayout()
        bootombox.addLayout(bootmbox)
        bootombox.addWidget(QLabel(""))
        self.checkBtn = QPushButton("开始监测")
        bootombox.addWidget(self.checkBtn)
        vbox.addLayout(bootombox)
        self.setLayout(vbox)
        self.checkBtn.clicked.connect(self.watch)
        self.timer.timeout.connect(self.refresh)
Ejemplo n.º 3
0
    def stack2UI(self):  # MANAGE STOCK UI with 3 tab options

        layout = QHBoxLayout()
        layout.setGeometry(QRect(0, 300, 1150, 500))
        tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tab3 = QWidget()

        tabs.addTab(self.tab1, 'Add Quantity')
        tabs.addTab(self.tab2, 'Reduce Quantity')
        tabs.addTab(self.tab3, 'Delete Stock')

        self.tab1UI()
        self.tab2UI()
        self.tab3UI()

        layout.addWidget(tabs)
        self.stack2.setLayout(layout)
class SettWin(QWidget):

    listnames = ['Программа настройки',
                 'Восстановить настройки указателя по умолчанию',
                 'Посетить сайт', 'Сбросить настройки программы',
                 'Системная рамка окна утилиты']

    strtolist = 'Посетить сайт разработчика и автора программы, ' \
                'для получения дополнительной информации.'

    captions = ['Выполнить', 'Перейти', 'Сброс']

    def __init__(self, parent=None, *args, **kwargs):
        super(SettWin, self).__init__(parent, *args, **kwargs)
        self.setWindowTitle('Settings')
        self.getsettUI()

    def getsettUI(self):
        vbx = QVBoxLayout(self)
        self.grid = QGridLayout()
        self.hbox = QHBoxLayout()

        closeBtn = CloseButton()
        closeBtn.clicked.connect(lambda: self.parent().getPrevious(self))
        self.hbox.addWidget(closeBtn)
        self.btnh = closeBtn.sizeHint()

        vbx.addLayout(self.hbox)

        self.boxbuttons = QVBoxLayout()

        for caption in range(len(self.captions)):
            setBtns = ProjButton(self.captions[caption])
            setBtns.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

            background = ['#eeeff7', '#9aa9d5']
            backimage = str('set_button2')

            if caption == 1:
                background = ['#4f587d', '#304563']
                backimage = 'set_button1'

            setBtns.setStyleSheet('''
                QPushButton{
                    background:%s url(accessory/images/%s.png);
                    border-radius:18px;background-repeat:no-repeat;
                    background-position:left;background-origin:content;
                    padding-left:0.4em;font:bold 12px;color:#2b2e36;
                }
                QPushButton::pressed{
                    background:%s url(accessory/images/%s_Active.png);
                    background-repeat:no-repeat;
                    background-position:left;
                }''' % (background[0], backimage, background[1], backimage))

            setBtns.setMaximumSize(170, 42)
            setBtns.setMinimumSize(setBtns.size())
            setBtns.clicked.connect(partial(self.getvalBtns, caption))
            self.boxbuttons.addWidget(setBtns)

        setcheckn = QCheckBox()
        """Проверка на существование обозначения, в файле настроек,
            программы `configfile.ini`"""
        checkstate = getPar().settings.value('checkstate')
        if checkstate is not None:
            setcheckn.setCheckState(int(checkstate))
        else:
            setcheckn.setCheckState(Qt.Checked)

        setcheckn.setCursor(Qt.PointingHandCursor)
        setcheckn.setStyleSheet("""
            QCheckBox::indicator{
                background-color:#eeeff7;
                border:3px solid #4f587d;
                width:20px;height:20px;
            }
            QCheckBox::indicator:checked{
                image:url(accessory/images/check.png);
            }""")
        setcheckn.resize(20,20)
        setcheckn.setMinimumSize(setcheckn.size())
        setcheckn.stateChanged.connect(getPar().clickBox)
        self.boxbuttons.addWidget(setcheckn, 1, Qt.AlignHCenter)

        self.boxbuttons.setSpacing(30)
        vbx.addLayout(self.boxbuttons)
        self.setLayout(vbx)

    def getvalBtns(self, val):
        if val == 0:

            dlg = QDialog(self, Qt.Dialog |
                          Qt.WindowTitleHint | Qt.WindowCloseButtonHint)
            dlg.setStyleSheet('''background-color:#81848c;''')
            dlg.resize(dlg.width() * 2.5, dlg.height() * 3.2)

            buttonBox = QDialogButtonBox(QDialogButtonBox.Ok)
            buttonBox.setCursor(Qt.PointingHandCursor)
            buttonBox.setStyleSheet('''
                QPushButton{
                    background-color:#585b63;font-size:13px;
                    border:1px solid #21242c;padding:0.2em 0;
                    width:60px;
                }
                QPushButton::pressed{
                    background-color:#76798e;color:#ffffff;
                    border-color:#a3a6bb;
                }''')

            buttonBox.setCenterButtons(True)
            buttonBox.accepted.connect(dlg.close)

            lbl = QLabel('Системные настройки указателя востнановленны.')
            lbl.setAlignment(Qt.AlignCenter)
            fnt = QFont('Helvetica, Arial, sans-serif', 10)
            fnt.setBold(True)
            lbl.setFont(fnt)
            lbl.setWordWrap(True)

            vlayout = QVBoxLayout()
            vlayout.addWidget(lbl)
            vlayout.addWidget(buttonBox)

            dlg.setLayout(vlayout)
            dlg.exec_()
        elif val == 1:
            launch_webbrowser('https://pcompstart.com/')
        elif val == 2:
            # QDialog - контейнер для кнопок
            dlg = QDialog(self, Qt.Dialog |
                          Qt.WindowTitleHint | Qt.WindowCloseButtonHint)
            dlg.setStyleSheet('''background-color:#81848c;''')
            dlg.resize(dlg.width() * 2.5, dlg.height() * 3.2)

            """`ProjButton` создание кнопки для преврашения
                в последующее пустое место, между кнопками в
                `QDialogButtonBox`"""
            projbutton = ProjButton('')

            # `QDialogButtonBox` - кнопки `Reset` и `Cancel`
            buttonBox = QDialogButtonBox(QDialogButtonBox.Cancel)
            buttonBox.addButton('Reset', QDialogButtonBox.AcceptRole)
            buttonBox.addButton(projbutton, QDialogButtonBox.ActionRole)
            buttonBox.setCursor(Qt.PointingHandCursor)
            buttonBox.setStyleSheet('''
                QPushButton{
                    background-color:#585b63;font-size:13px;
                    border:1px solid #21242c;padding:0.2em 0;
                    width:60px;
                }
                QPushButton::pressed{
                    background-color:#76798e;color:#ffffff;
                    border-color:#a3a6bb;
                }''')

            projbutton.setCursor(Qt.ArrowCursor)
            projbutton.setStyleSheet('''
                background:transparent;border:transparent;
                width:20px;''')

            buttonBox.setCenterButtons(True)
            buttonBox.accepted.connect(self.on_quit)
            buttonBox.rejected.connect(dlg.close)

            lbl = QLabel('После сброса, требуется перезапустить программу.')
            lbl.setAlignment(Qt.AlignCenter)
            fnt = QFont('Helvetica, Arial, sans-serif', 10)
            fnt.setBold(True)
            lbl.setFont(fnt)
            lbl.setWordWrap(True)

            vlayout = QVBoxLayout()
            vlayout.addWidget(lbl)
            vlayout.addWidget(buttonBox)

            dlg.setLayout(vlayout)
            dlg.exec_()

    def resizeEvent(self, event):
        # self.evh отступ 50 px от верха окна
        parheight = event.size().height()
        parwidth = event.size().width()
        self.evh = parheight / 13
        ymarg = (self.evh / 2) - (self.btnh.height() / 2)
        xmarg = (self.width() - self.btnh.width()) / 1.01
        self.hbox.setGeometry(QRect(
            xmarg, ymarg, self.btnh.width(), self.btnh.height()))

        self.boxbuttons.setGeometry(QRect(
            parwidth / 1.4, parheight / 40,
            190, parheight))

    # def closeEvent(self, closeEv):
    #     print(qApp.children())
    #     closeEv.ignore()


    def paintEvent(self, event):
        qp = QPainter()
        qp.begin(self)
        self.drawLines(qp)
        qp.end()

    def drawLines(self, qp):
        pen = QPen(QColor('#eeeff7'), 2, Qt.SolidLine)
        qp.setPen(pen)

        font = QFont('Arial', 19)
        qp.setFont(font)

        # first - растояние первой линии от верха
        first = self.evh
        qp.drawLine(self.x(), first, self.width(), first)

        # Отрисовка главного заголовка настроек
        # Функция возвращающая верхнюю середину ширины окна для подзаголовка
        def getPosxTitle(name):
            wn = qp.fontMetrics().width(name)
            return (self.width() / 2) - (wn / 2)

        pos_x_title = getPosxTitle(self.listnames[0])

        # Условие описания уменьшения названия при уменьшении высоты
        if self.height() < self.parent().baseSize().height():
            fontsize = (first - font.pointSizeF()) / 1.6
            if self.height() <= 550:
                fontsize = 14

            font.setPointSizeF(fontsize)
            qp.setFont(font)
            pos_x_title = getPosxTitle(self.listnames[0])

        qp.drawText(pos_x_title, first / 1.55, self.listnames[0])

        # distance = 150 дистанция между остальными линиями
        distance = (self.height() - first) / 4
        i = 0
        '''leftIndent - маштабируемый отступ от левой стороны окна,
            для названий категорий настроек'''
        leftIndent = qp.viewport().width() / 9

        while first < self.height() and i < len(self.listnames[1:]):
            first += distance
            i += 1
            qp.setPen(QColor('#9fcdd0'))
            font.setPointSize(16)

            # ширина квадрата в котором написано название категории
            # widthrect = 240
            widthrect = 240

            # размер маленького шрифта
            smallfnt = 10

            if self.height() < self.parent().baseSize().height():
                if self.height() <= 550:
                    font.setPointSize(13)
                    widthrect = 220
                    smallfnt = 8
                else:
                    font.setPointSizeF(distance / font.pointSizeF() * 1.72)
            qp.setFont(font)

            # posvcen - вычисление маштабируемого отступа по выстое
            posvcen = lambda a: distance / a + qp.fontMetrics().height()
            if i == 2:
                qp.drawText(
                    leftIndent - 5, first - posvcen(1.55), widthrect, distance / 2,
                    Qt.TextWordWrap | Qt.AlignHCenter|Qt.AA_EnableHighDpiScaling, self.listnames[i])

                qp.setPen(QColor('#eeeff7'))
                # font.setPointSize(smallfnt)
                font.setPointSize(smallfnt)
                font.setItalic(True)
                qp.setFont(font)
                qp.drawText(
                    leftIndent, first - posvcen(2.15), 230, distance / 2,
                    Qt.TextWordWrap | Qt.AlignHCenter|Qt.AA_EnableHighDpiScaling, self.strtolist)
            else:
                font.setItalic(False)
                qp.setFont(font)
                qp.drawText(
                    leftIndent, first - posvcen(2), widthrect, distance / 2,
                    Qt.TextWordWrap | Qt.AlignHCenter|Qt.AA_EnableHighDpiScaling, self.listnames[i])
            # отрисовка линий
            if first >= self.height():
                continue
            else:
                qp.setPen(pen)
                qp.drawLine(self.rect().x(), first, self.width(), first)

    def on_quit(self):
        confpath = '{}/accessory/configfile.ini'.format(os.getcwd())
        if os.path.exists(confpath):
            os.remove(confpath)
        qApp.quit()
    def setup_ui(self):
        # Create the main layout
        main_layout = QVBoxLayout()
        self.setLayout(main_layout)

        # Create a Label to be the title
        lbl_title = QLabel(
            "Beaglebone Black - RS485 Serial Interface Controller\nControls Group"
        )
        # Add some StyleSheet to it
        lbl_title.setStyleSheet("\
            QLabel {\
                qproperty-alignment: AlignCenter;\
                border: 1px solid #FF17365D;\
                border-top-left-radius: 15px;\
                border-top-right-radius: 15px;\
                background-color: #FF17365D;\
                padding: 5px 0px;\
                color: rgb(255, 255, 255);\
                max-height: 40px;\
                font-size: 14px;\
            }")

        # Add the title label to the main layout
        main_layout.addWidget(lbl_title)

        # Create a GroupBox for subtitles
        legend_layout = QHBoxLayout()
        legend_layout.setGeometry(QtCore.QRect(10, 10, 50, 30))
        gb_legend = QGroupBox(parent=self)
        gb_legend.setLayout(legend_layout)

        # Create a squares and labels
        brush_black = QBrush(QColor(255, 255, 255))
        brush_black.setStyle(QtCore.Qt.SolidPattern)
        brush_orange = QBrush(QColor(193, 125, 17))
        brush_orange.setStyle(QtCore.Qt.SolidPattern)
        brush_blue = QBrush(QColor(52, 101, 164))
        brush_blue.setStyle(QtCore.Qt.SolidPattern)

        palette = QPalette()
        palette.setBrush(QPalette.Active, QPalette.Base, brush_black)
        palette.setBrush(QPalette.Inactive, QPalette.Base, brush_black)

        font = QFont()
        font.setItalic(True)

        self.color_IOC = QLineEdit()
        self.color_IOC.setEnabled(False)
        self.color_IOC.setMaximumSize(QtCore.QSize(15, 15))
        palette.setBrush(QPalette.Disabled, QPalette.Base, brush_blue)
        self.color_IOC.setPalette(palette)

        self.text_IOC = QLabel()
        self.text_IOC.setText("IOC")
        self.text_IOC.setFont(font)

        self.color_PES = QLineEdit()
        self.color_PES.setEnabled(False)
        self.color_PES.setMaximumSize(QtCore.QSize(15, 15))
        palette.setBrush(QPalette.Disabled, QPalette.Base, brush_orange)
        self.color_PES.setPalette(palette)

        self.text_PES = QLabel()
        self.text_PES.setText("PES")
        self.text_PES.setFont(font)

        # Add the created widgets to the layout
        legend_layout.addWidget(self.color_IOC)
        legend_layout.addWidget(self.text_IOC)
        legend_layout.addWidget(self.color_PES)
        legend_layout.addWidget(self.text_PES)

        # Add the Groupbox to the main layout
        main_layout.addWidget(gb_legend)

        # Create the Search Panel layout
        search_layout = QHBoxLayout()

        # Create a GroupBox with "Filtering" as Title
        gb_search = QGroupBox(parent=self)
        gb_search.setLayout(search_layout)

        # Create a label, line edit and button for filtering
        lbl_search = QLabel(text="Filter: ")
        self.txt_filter = QLineEdit()
        self.txt_filter.returnPressed.connect(self.do_search)
        btn_search = QPushButton()
        btn_search.setText("Search")
        btn_search.clicked.connect(self.do_search)

        # Add the created widgets to the layout
        search_layout.addWidget(lbl_search)
        search_layout.addWidget(self.txt_filter)
        search_layout.addWidget(btn_search)

        # Add the Groupbox to the main layout
        main_layout.addWidget(gb_search)

        # Create the Results Layout
        self.resultsLT_layout = QVBoxLayout()
        self.resultsLT_layout.setContentsMargins(0, 0, 0, 0)
        self.resultsBO_layout = QVBoxLayout()
        self.resultsBO_layout.setContentsMargins(0, 0, 0, 0)
        self.resultsSR_layout = QVBoxLayout()
        self.resultsSR_layout.setContentsMargins(0, 0, 0, 0)
        self.resultsDCL_layout = QVBoxLayout()
        self.resultsDCL_layout.setContentsMargins(0, 0, 0, 0)
        # Create a Frame to host the results of search
        self.frmLT_result = QFrame(parent=self)
        self.frmLT_result.setLayout(self.resultsLT_layout)
        self.frmBO_result = QFrame(parent=self)
        self.frmBO_result.setLayout(self.resultsBO_layout)
        self.frmSR_result = QFrame(parent=self)
        self.frmSR_result.setLayout(self.resultsSR_layout)
        self.frmDCL_result = QFrame(parent=self)
        self.frmDCL_result.setLayout(self.resultsDCL_layout)

        # Create a ScrollArea so we can properly handle many entries
        scroll_areaLT = QScrollArea(parent=self)
        scroll_areaBO = QScrollArea(parent=self)
        scroll_areaSR = QScrollArea(parent=self)
        scroll_areaDCL = QScrollArea(parent=self)
        scroll_areaLT.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        scroll_areaBO.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        scroll_areaSR.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        scroll_areaDCL.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        scroll_areaLT.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        scroll_areaBO.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        scroll_areaSR.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        scroll_areaDCL.setHorizontalScrollBarPolicy(
            QtCore.Qt.ScrollBarAlwaysOff)
        scroll_areaLT.setWidgetResizable(True)
        scroll_areaBO.setWidgetResizable(True)
        scroll_areaSR.setWidgetResizable(True)
        scroll_areaDCL.setWidgetResizable(True)

        # Add the Frame to the scroll area
        scroll_areaLT.setWidget(self.frmLT_result)
        scroll_areaBO.setWidget(self.frmBO_result)
        scroll_areaSR.setWidget(self.frmSR_result)
        scroll_areaDCL.setWidget(self.frmDCL_result)

        # Create tabs
        self.tabWidget = QTabWidget(parent=self)
        self.tabLT = QWidget(self.tabWidget)
        self.tabWidget.addTab(self.tabLT, "LTs")
        self.LTLayout = QHBoxLayout(self.tabLT)
        self.LTLayout.setContentsMargins(0, 0, 0, 0)
        self.tabsBooster = QWidget(self.tabWidget)
        self.tabWidget.addTab(self.tabsBooster, "Booster")
        self.BOLayout = QHBoxLayout(self.tabsBooster)
        self.BOLayout.setContentsMargins(0, 0, 0, 0)
        self.tabsAnel = QWidget(self.tabWidget)
        self.tabWidget.addTab(self.tabsAnel, "Anel")
        self.SRLayout = QHBoxLayout(self.tabsAnel)
        self.SRLayout.setContentsMargins(0, 0, 0, 0)
        self.tabsDCLink = QWidget(self.tabWidget)
        self.tabWidget.addTab(self.tabsDCLink, "DC-Link")
        self.DCLLayout = QHBoxLayout(self.tabsDCLink)
        self.DCLLayout.setContentsMargins(0, 0, 0, 0)

        # Add the scroll area to the main layout
        main_layout.addWidget(self.tabWidget)

        # Add the scroll area to the main layout
        self.LTLayout.addWidget(scroll_areaLT)
        self.BOLayout.addWidget(scroll_areaBO)
        self.SRLayout.addWidget(scroll_areaSR)
        self.DCLLayout.addWidget(scroll_areaDCL)
Ejemplo n.º 6
0
class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.my_balance = my_balance
        self.count = 0
        self.inform = -1
        self.setGeometry(450, 200, 400, 400)

        self.topLayout = QHBoxLayout()
        self.topLayout.setGeometry(QtCore.QRect(5, 5, 390, 50))
        self.mainLayout = QVBoxLayout()

        self.btn = QPushButton(self)
        self.btn.move(5, 5)
        self.btn.setText("Доход")
        self.btn.clicked.connect(self.btn_plus_money)

        self.btn_2 = QPushButton(self)
        self.btn_2.move(5, 5)
        self.btn_2.setText("Расход")
        self.btn_2.clicked.connect(self.btn_minus_money)

        self.balance = QLabel(f'Ваш Баланс: {str(self.my_balance)}', self)

        self.itemsLayout = QVBoxLayout()

        self.scrollWidget = QWidget()
        self.scrollWidget.setLayout(self.itemsLayout)

        self.scrollArea = QScrollArea()
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setWidget(self.scrollWidget)

        self.topLayout.addWidget(self.btn)
        self.topLayout.addWidget(self.btn_2)
        self.topLayout.addWidget(self.balance)
        self.mainLayout.addLayout(self.topLayout)
        self.mainLayout.addWidget(self.scrollArea)

        self.setLayout(self.mainLayout)

    def btn_on_click(self):
        btn = QPushButton(self)
        btn.setText(str(self.count))
        self.count += 1
        self.itemsLayout.addWidget(btn)

    def btn_plus_money(self):
        corrective = QHBoxLayout()
        self.btn_added_in_plus = QPushButton(self)
        self.btn_added_in_plus.setText('Информация')
        self.showDialogForPlus()
        corrective.addWidget(self.profit)
        corrective.addWidget(self.btn_added_in_plus)
        self.itemsLayout.addLayout(corrective)

    def showDialogForPlus(self):
        cash, ok = QInputDialog.getText(self, 'Доход', 'Сколько получили?')

        if ok:
            self.profit = QLabel(f'+{str(cash)}', self)
            self.my_balance += int(cash)
            self.balance.setText(f'Ваш баланс: {str(self.my_balance)}')

    def btn_minus_money(self):
        corrective = QHBoxLayout()
        self.btn_added_in_minus = QPushButton(self)
        self.btn_added_in_minus.setText('Информация')
        self.showDialogForMinus()
        self.showDialogForInformation()
        self.btn_added_in_minus.clicked.connect(self.btn_for_information)
        corrective.addWidget(self.outgo)
        corrective.addWidget(self.btn_added_in_minus)
        self.itemsLayout.addLayout(corrective)

    def showDialogForMinus(self):
        cash, ok = QInputDialog.getText(self, 'Расход', 'Сколько потратили?')

        if ok:
            self.outgo = QLabel(f'-{str(cash)}', self)
            self.my_balance -= int(cash)
            self.balance.setText(f'Ваш баланс: {str(self.my_balance)}')

    def showDialogForInformation(self):
        information, ok = QInputDialog.getText(self, 'Информация', 'Описание')

        if ok:
            self.inform = information

    def btn_for_information(self, information):
        QMessageBox.information(self, 'Message', f'{information}')
Ejemplo n.º 7
0
 def __init__(self, statusText, parent=None, **kargs):
     super(QWidget, self).__init__(parent)
     self.isClosed = False
     self.statusText = statusText
     self.imageDisplay = Image_Display()
     self.imageDisplay.clientReleaseEvent(self.clientReleaseEvent)
     self.imageDict = imageDictCreate()
     self.pixelLevels = (int(0), int(255))
     self.npixelLevels = 255
     self.minimum = 0
     self.low = 0
     self.high = self.npixelLevels
     self.maximum = self.npixelLevels
     # following are for zoom image
     self.isZoomImage = False
     self.xlow = 0
     self.ylow = 0
     self.numx = 0
     self.numy = 0
     # first row
     minimumLabel = QLabel("minimum")
     minimumLabel.setFixedWidth(100)
     lowLabel = QLabel("low")
     lowLabel.setFixedWidth(90)
     titleLabel = QLabel("pixel intensity")
     titleLabel.setFixedWidth(110)
     highLabel = QLabel("high")
     highLabel.setFixedWidth(100)
     maximumLabel = QLabel("maximum")
     maximumLabel.setFixedWidth(80)
     zoomLabel = QLabel('||    zoom        (xlow,ylow,numx.numy)')
     box = QHBoxLayout()
     box.setContentsMargins(0, 0, 0, 0)
     box.addWidget(minimumLabel)
     box.addWidget(lowLabel)
     box.addWidget(titleLabel)
     box.addWidget(highLabel)
     box.addWidget(maximumLabel)
     box.addWidget(zoomLabel)
     wid = QWidget()
     wid.setLayout(box)
     self.firstRow = wid
     #second row
     self.minimumText = QLineEdit()
     self.minimumText.setText('')
     self.minimumText.setEnabled(True)
     self.minimumText.setFixedWidth(100)
     self.minimumText.editingFinished.connect(self.minimumEvent)
     self.lowText = QLabel('')
     self.lowText.setFixedWidth(100)
     spaceLabel = QLabel('')
     spaceLabel.setFixedWidth(100)
     self.highText = QLabel('')
     self.highText.setFixedWidth(100)
     self.maximumText = QLineEdit()
     self.maximumText.setFixedWidth(80)
     self.maximumText.editingFinished.connect(self.maximumEvent)
     self.maximumText.setEnabled(True)
     self.maximumText.setText('')
     dividerLabel = QLabel('||')
     dividerLabel.setFixedWidth(20)
     self.resetButton = QPushButton('reset')
     self.resetButton.setFixedWidth(40)
     self.resetButton.setEnabled(True)
     self.resetButton.clicked.connect(self.resetEvent)
     self.zoomText = QLineEdit()
     self.zoomText.setEnabled(True)
     self.zoomText.setFixedWidth(180)
     self.zoomText.editingFinished.connect(self.zoomTextEvent)
     box = QHBoxLayout()
     box.setContentsMargins(0, 0, 0, 0)
     box.addWidget(self.minimumText)
     box.addWidget(self.lowText)
     box.addWidget(spaceLabel)
     box.addWidget(self.highText)
     box.addWidget(self.maximumText)
     box.addWidget(dividerLabel)
     box.addWidget(self.resetButton)
     box.addWidget(self.zoomText)
     wid = QWidget()
     wid.setLayout(box)
     self.secondRow = wid
     #third row
     self.lowSlider = QSlider(Qt.Horizontal)
     self.lowSlider.setContentsMargins(0, 0, 0, 0)
     self.lowSlider.setMinimum(0)
     self.lowSlider.setMaximum(self.npixelLevels)
     self.lowSlider.setValue(0)
     self.lowSlider.setTickPosition(QSlider.TicksBelow)
     self.lowSlider.setTickInterval(10)
     self.lowSlider.setFixedWidth(256)
     self.highSlider = QSlider(Qt.Horizontal)
     self.highSlider.setContentsMargins(0, 0, 0, 0)
     self.highSlider.setMinimum(0)
     self.highSlider.setMaximum(self.npixelLevels)
     self.highSlider.setValue(self.npixelLevels)
     self.highSlider.setTickPosition(QSlider.TicksBelow)
     self.highSlider.setTickInterval(10)
     self.highSlider.setFixedWidth(256)
     box = QHBoxLayout()
     box.addStretch(0)
     box.setSpacing(0)
     box.setContentsMargins(0, 0, 0, 0)
     box.setGeometry(QRect(0, 0, 500, 20))
     box.addWidget(self.lowSlider)
     box.addWidget(self.highSlider)
     wid = QWidget()
     wid.setLayout(box)
     self.thirdRow = wid
     #create window
     layout = QGridLayout()
     layout.setSpacing(0)
     layout.addWidget(self.firstRow, 0, 0, alignment=Qt.AlignLeft)
     layout.addWidget(self.secondRow, 1, 0, alignment=Qt.AlignLeft)
     layout.addWidget(self.thirdRow, 2, 0, alignment=Qt.AlignLeft)
     self.setLayout(layout)
     self.lowSlider.valueChanged.connect(self.lowSliderValueChange)
     self.highSlider.valueChanged.connect(self.highSliderValueChange)
     self.show()
Ejemplo n.º 8
0
    def initUI(self):

        self.setWindowIcon(QtGui.QIcon('Iconka.bmp'))

        self.statusBar()
        font_status = QtGui.QFont()
        font_status.setFamily('Consolas')
        font_status.setPointSize(18)
        self.statusBar().setFont(font_status)

        self.setGeometry(150, 150, 1600, 700)
        self.setWindowTitle('ImageToGcode')
        self.setMinimumSize(QtCore.QSize(1600, 700))
        self.setMaximumSize(QtCore.QSize(1920, 1080))

        # Кнопка загрузки изображения
        self.zagruzka = Butt('Завантаження', self)
        self.zagruzka.setFixedSize(200, 30)
        # self.zagruzka.setGeometry(QtCore.QRect(30, 30, 150, 50))

        # Кнопка просмотра редактированного изображения
        self.pixelization = Butt('Пікселізація', self)
        self.pixelization.setFixedSize(200, 30)
        # self.pixelization.setGeometry(QtCore.QRect(520, 65, 200, 50))

        # Кнопка рассчета программы
        self.calculate_path = Butt('Розрахувати траєкторію', self)
        self.calculate_path.setFixedSize(300, 30)
        self.calculate_path.setDisabled(True)

        # Кнопка сохранения Gcode
        self.save_doc = Butt('Зберегти файл', self)
        self.save_doc.setFixedSize(250, 50)
        # self.save_doc.setGeometry(QtCore.QRect(1150, 620, 250, 50))
        self.save_doc.setDisabled(True)

        # Информация про размер изображения
        self.info_picture = Nadpis('Розмір зображення: ', self)
        self.info_picture.setFixedSize(550, 30)
        # self.info_picture.setGeometry(QtCore.QRect(190, 30, 550, 30))
        self.info_picture.setFrameStyle(1)

        # Информация о параметрах редактирования изображения
        self.scale = Nadpis('Кратність: ', self)
        self.scale.setFixedSize(200, 30)
        # self.scale.setGeometry(QtCore.QRect(210, 60, 190, 30))
        self.size_pixel = Nadpis('Розмір пікселя: ', self)
        self.size_pixel.setFixedSize(200, 30)
        # self.size_pixel.setGeometry(QtCore.QRect(210, 90, 190, 30))

        # Вывод размера пикселя
        self.size_pixel_out = Nadpis(self)
        self.size_pixel_out.setFixedSize(110, 30)
        # self.size_pixel_out.setGeometry(QtCore.QRect(400, 90, 110, 30))
        self.size_pixel_out.setFrameStyle(1)
        self.size_pixel_out.setAlignment(QtCore.Qt.AlignRight
                                         | QtCore.Qt.AlignBaseline)

        # Елементы для просмотра загруженного и обработанного изображений
        self.origin_image = Nadpis(self)
        self.origin_image.setGeometry(QtCore.QRect(60, 150, 500, 500))
        self.origin_image.setFrameStyle(1)

        self.edited_image = Nadpis(self)
        self.edited_image.setGeometry(QtCore.QRect(580, 150, 500, 500))
        self.edited_image.setFrameStyle(1)

        # Інформація про готову траєкторію

        self.path_info = Nadpis(path_info_text(), self)
        self.path_info.setFixedSize(450, 90)
        # self.path_info.setAlignment(QtCore.Qt.AlignVCenter |
        # QtCore.Qt.AlignBaseline)
        # self.path_info.setGeometry(QtCore.QRect(190, 30, 550, 30))
        self.path_info.setFrameStyle(1)
        self.path_info.setVisible(True)

        # Поля ввода для параметров редактирования изображения
        self.scale_input = L_Edit_int(self)
        self.scale_input.setGeometry(QtCore.QRect(400, 60, 110, 30))

        # Надписи названий полей
        self.rozmir = Nadpis(12 * ' ' + 'Розмір зони обробки', self)
        self.Width_size = Nadpis('Ширина', self)
        self.Height_size = Nadpis('Висота', self)
        self.blank = Nadpis('', self)
        self.feed_z_n = Nadpis('Вертикальна подача', self)
        self.z_safe_n = Nadpis('Висота безпеки', self)
        self.depth_Z_n = Nadpis('Максимальна глибина', self)
        self.filtr_z_n = Nadpis('Мінімальний поріг глибини', self)
        self.rapid_feed = Nadpis('Швидкість холостого ходу', self)

        # Надписи одиниць вимірювання
        self.unit1 = Nadpis('мм', self)
        self.unit2 = Nadpis('мм', self)
        self.unit3 = Nadpis('мм/хв', self)
        self.unit4 = Nadpis('мм', self)
        self.unit5 = Nadpis('мм', self)
        self.unit6 = Nadpis('мм', self)
        self.unit7 = Nadpis('мм/хв', self)

        self.rozmir.setFixedSize(250, 30)
        self.blank.setFixedSize(150, 30)

        # Поля вводу для параметрів для створення управляючої програми
        self.Width_size_input = L_Edit(self)
        self.Height_size_input = L_Edit(self)
        self.feed_z_input = L_Edit(self)
        self.z_safe_input = L_Edit(self)
        self.depth_Z_input = L_Edit(self)
        self.filtr_z_input = L_Edit(self)
        self.rapid_feed_input = L_Edit(self)

        # Сітка із елементів інтерфейсу
        zagruz_pix = QGridLayout()
        self.setLayout(zagruz_pix)
        zagruz_pix.setSpacing(10)

        zagruz_pix.addWidget(self.zagruzka, 0, 0)
        zagruz_pix.addWidget(self.pixelization, 1, 0)

        zagruz_pix.addWidget(self.info_picture, 0, 1, 1, 3)
        zagruz_pix.addWidget(self.scale, 1, 1)
        zagruz_pix.addWidget(self.size_pixel, 2, 1)
        zagruz_pix.addWidget(self.scale_input, 1, 2)
        zagruz_pix.addWidget(self.size_pixel_out, 2, 2)

        # Розміри сітки елементів
        zagruz_pix.setGeometry(QtCore.QRect(30, 30, 1200, 90))

        # Група елеметів для показу зображень
        visualisation_elements = QHBoxLayout()
        self.setLayout(visualisation_elements)
        visualisation_elements.setSpacing(30)

        visualisation_elements.addWidget(self.origin_image)
        visualisation_elements.addWidget(self.edited_image)

        visualisation_elements.setGeometry(QtCore.QRect(50, 160, 1050, 500))

        # Сетка из елементов для параметров станка
        cnc_params = QGridLayout()
        self.setLayout(cnc_params)
        cnc_params.setSpacing(10)

        cnc_params.addWidget(self.rozmir, 1, 0, 1, 2)

        cnc_params.addWidget(self.Width_size, 2, 0)
        cnc_params.addWidget(self.Width_size_input, 2, 1)
        cnc_params.addWidget(self.unit2, 2, 2)

        cnc_params.addWidget(self.Height_size, 3, 0)
        cnc_params.addWidget(self.Height_size_input, 3, 1)
        cnc_params.addWidget(self.unit1, 3, 2)

        cnc_params.addWidget(self.blank, 4, 0)

        cnc_params.addWidget(self.feed_z_n, 5, 0)
        cnc_params.addWidget(self.feed_z_input, 5, 1)
        cnc_params.addWidget(self.unit3, 5, 2)

        cnc_params.addWidget(self.z_safe_n, 6, 0)
        cnc_params.addWidget(self.z_safe_input, 6, 1)
        cnc_params.addWidget(self.unit4, 6, 2)

        cnc_params.addWidget(self.depth_Z_n, 7, 0)
        cnc_params.addWidget(
            self.depth_Z_input,
            7,
            1,
        )
        cnc_params.addWidget(self.unit5, 7, 2)

        cnc_params.addWidget(self.filtr_z_n, 8, 0)
        cnc_params.addWidget(
            self.filtr_z_input,
            8,
            1,
        )
        cnc_params.addWidget(self.unit6, 8, 2)

        cnc_params.addWidget(self.rapid_feed, 9, 0)
        cnc_params.addWidget(self.rapid_feed_input, 9, 1)
        cnc_params.addWidget(self.unit7, 9, 2)

        cnc_params.addWidget(self.calculate_path, 10, 0)

        cnc_params.addWidget(self.path_info, 11, 0, 1, 3)

        cnc_params.addWidget(self.save_doc, 13, 0)

        # Розміри сітки елементів
        cnc_params.setGeometry(QtCore.QRect(1110, 80, 520, 580))

        # Диалоговое окно вибора файла.
        self.openFile = QAction(QIcon('open.png'), 'Відкрити файл...    ',
                                self)
        self.openFile.setShortcut('Ctrl+O')
        self.openFile.setStatusTip('Відкрити новий файл')
        # openFile.triggered.connect(self.showDialog)

        self.menubar = self.menuBar()
        self.fileMenu = self.menubar.addMenu('&Файл')
        self.fileMenu.addAction(self.openFile)
        self.fileMenu = self.menubar.addMenu('&Інфо')

        self.show()
Ejemplo n.º 9
0
class View(QWidget):

    send_data           = pyqtSignal(object)
    baudrate_src_changed    = pyqtSignal(object)
    baudrate_pump_changed    = pyqtSignal(object)
    baudrate_temp_changed    = pyqtSignal(object)
    #eol_changed         = pyqtSignal(object)
    port_changed        = pyqtSignal(object)
    seedPulseChanged = pyqtSignal(object)
    seedFreValueChanged = pyqtSignal(object)
    seedPulseFreChanged = pyqtSignal(object)
    firstPumpChanged = pyqtSignal(object)
    secondPumpChanged = pyqtSignal(object)
    startSrcModel = pyqtSignal(object)
    startPumpModel = pyqtSignal(object)
    startTempModel = pyqtSignal(object)
    beginTime = pyqtSignal(object)
    emitUsername = pyqtSignal(object)

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


        self.queue      = Queue()
        self.end_cmd    = None
        self.autoscroll = True
        self.msg_sent   = False

        self.timer = QTimer()
        self.timer.timeout.connect(self.update_gui)
        self.timer.start(100)
        self.srcModelstarted = False
        self.pumpModelstarted = False
        self.tempModelstarted = False
        self.currentValueList =list()
        self.currentTimeList = list()
        self.buttonMinimumWidth = 100
        # self.topSeedCurrent = 700
        # self.topPumpCurrent = 1000
        self.canClosePort = True

        self.initSeedPulse = 0
        self.initSeedFre = 0
        self.init1stCurrent = 0
        self.init2stCurrent = 0
        self.initSeedCurrent =0
        # get the lastsave record
        self.last = LastLog()
        self.lastpick = self.last.loadLast()
        uslast = self.lastpick.get('user',False)
        print('uslast',uslast)
        if uslast is False:
            self.user = User()
        else:
            self.user = uslast
        #init down machine status
        self.__init__slaveStatus()
        self.__initUI()


    def __init__slaveStatus(self):
        self.isSeedOpen = False
        self.seedcurrentre = False
        self.seedpulsere = False
        self.seedfrequecere = False
        self.seedcurrent = 0
        self.seedpulse = 0
        self.seedfrequece = 0
        self.firstcurrent = 0
        self.secondcurrent = 0
        self.isFirstPumpOpen = False
        self.isSecondPumpOpen = False
        self.isLEDOpen = False


    def __initUI(self):
        '''main window box'''

        self.mainBox = QVBoxLayout(self)#使用垂直布局类
        self.showBox = QHBoxLayout()
        self.setWindowState(Qt.WindowMaximized)
###
#command area: push button, plain text edit and line edit
###
        cmd_btn = QPushButton('Send Command (ctrl+Q)')
        cmd_btn.setMinimumWidth(self.buttonMinimumWidth)
        cmd_btn.clicked.connect(self.emit_send_data)
        #import cmd strl+enter
        cmdEnterAction = QAction(self)
        cmdEnterAction.setShortcut('ctrl+Q')
        cmdEnterAction.setStatusTip(' press ctrl+Q to send command')
        cmdEnterAction.triggered.connect(self.emit_send_data)
        self.cmd_edit = QLineEdit()
        self.cmd_edit.addAction(cmdEnterAction)
        cmdBox = QVBoxLayout()


#message box
        self.editer = QPlainTextEdit()
        self.editer.setReadOnly(True)
# <<<<<<< HEAD
        self.editer.setMaximumSize(300,2000)
# =======
        cmdBox = QVBoxLayout()
        # cmdBox.addWidget(self.cmd_edit)
        # cmdBox.addWidget(cmd_btn)
        self.powerShow = PowerShow()
        cmdBox.addWidget(self.powerShow)
# >>>>>>> a45e80ec77a4a8729fa4205165faae001fd09cab
        cmdBox.addWidget(self.editer)
        # cmd_btn.setMaximumSize(300,400)
        # self.cmd_edit.setMaximumSize(300,100)

###
#paint area use matplotlib
###
        self.paintwidget = QWidget(self)
        self.painter = MyDynamicMplCanvas(self.paintwidget, width=5, height=4, dpi=100)
        # self.showBox.addLayout(self.powerShowUI())
        self.showBox.addLayout(cmdBox)
        self.showBox.addWidget(self.painter)
        self.toolBoxUI()
        self.mainBox.addWidget(self.toolBox)
        self.mainBox.addLayout(self.showBox)


        self.setLayout(self.mainBox)
        self.setWindowTitle("光子暗化平台软件")

    def toolBoxUI(self):
        '''use a tab widget to organize set area
        '''
###
#QTabWidget() layout
###
        gbox1 = QGroupBox()
        gbox1.setStyleSheet("QGroupBox{border:None;}")
        self.useBox = QHBoxLayout(gbox1)
        self.useBox.setGeometry(QRect( 0, 0, 300,100))
        gbox2 = QGroupBox()
        gbox2.setStyleSheet("QGroupBox{border:None;}")
        self.portUI = PortGBUI()
        self.portUI.setupUi(gbox2)
        # self.portUI.widget.setGeometry(QRect( 0, 0, 450,200))
        gbox3 = QGroupBox()
        gbox3.setStyleSheet("QGroupBox{border:None;}")
        self.pumpUI = PumpUI()
        self.pumpUI.setupUi(gbox3)
        self.pumpUI.groupBox.setTitle(' ')
        # self.pumpUI.widget.setGeometry(QRect( 0, 0, 400,200))
        gbox4 = QGroupBox()
        gbox4.setStyleSheet("QGroupBox{border:None;}")
        gbox5 = QGroupBox()
        gbox5.setStyleSheet("QGroupBox{border:None;}")
        #self.menuBox = QHBoxLayout()

        # self.setBox = QHBoxLayout(gbox2)
        self.pumpBox = QGridLayout(gbox3)
        self.powerRecordBox = QHBoxLayout(gbox4)
        self.toolBox = QTabWidget()
        # self.toolBox.setStyleSheet("QTabWidget.pane{background: transparent;}\
        #     ")
        self.toolBox.addTab(gbox1,'用户登录')
        self.toolBox.addTab(gbox2,'串口设置')
        self.toolBox.addTab(gbox3,'泵浦开关')
        self.toolBox.addTab(gbox4,'功率计')
        self.toolBox.addTab(gbox5,'帮助')
        # self.toolBox.
        self.toolBox.setTabEnabled(1,False)
        self.toolBox.setTabEnabled(2,False)
        self.toolBox.setTabEnabled(3,False)
        self.toolBox.setMaximumSize(10000,200)
        # self.toolBox.resize(1200,200)
        userbox = UserView()
        userbox.usersignal.connect(self.setUser)
        self.useBox.addWidget(userbox)
        # self.useBox.addStretch()
        self.powerRecord = PowerRecord()
        self.powerRecord.getNowFig(self.painter)
        self.powerRecord.timeStateSignal.connect(self.painter.getLogTimeState)
        self.powerRecord.logStateSignal.connect(self.painter.getStartLog)
        self.powerRecord.plotlist.connect(self.painter.XYaxitList)
        self.powerRecordBox.addWidget(self.powerRecord)
#
#port set
#
        menuItem = ['300 baud','1200 baud',
            '2400 baud','4800 baud','9600 baud',
            '19200 baud','38400 baud','57600 baud',
            '115200 baud','230400 baud','250000 baud']
        self.portUI.baundrateSource.addItems(menuItem)
        self.portUI.baundratePump.addItems(menuItem)
        # self.portUI.baundrateTemp.addItems(menuItem)
#source port set
        #source
        portItem = ['com1','com2','com3','com4',
            'com5','com6','com7','com8','com9',
            'com10','com11','com12','com13',
            'com14','com15','com16','com17',
            'com18','com19','com20']
        self.portUI.portSource.addItems(portItem)
        self.portUI.portPump.addItems(portItem)
        self.setPortButton = self.portUI.openportSource
        self.closePortButton = self.portUI.closeportSource
        self.baundrateMenu = self.portUI.baundrateSource
        self.portEdit = self.portUI.portSource
        self.baundrateMenu.currentIndexChanged.connect(self.emit_br_src_changed)
        baudindex = self.lastpick.get('srcBaud',False)
        if baudindex is not False :
            self.baundrateMenu.setCurrentIndex(baudindex)
        else:
            self.baundrateMenu.setCurrentIndex(4)
        portindex = self.lastpick.get('srcPort',False)
        if baudindex is not False :
            self.portEdit.setCurrentIndex(portindex)
        else:
            self.portEdit.setCurrentIndex(1)

        baudindex = self.lastpick.get('pumpBaud',False)
        if baudindex is not False :
            self.portUI.baundratePump.setCurrentIndex(baudindex)
        else:
            self.portUI.baundratePump.setCurrentIndex(4)
        portindex = self.lastpick.get('pumpPort',False)
        if baudindex is not False :
            self.portUI.portPump.setCurrentIndex(portindex)
        else:
            self.portUI.portPump.setCurrentIndex(2)

###
#pump set
###
        self.openSeedButton = self.pumpUI.sourceSet
        self.setSeedPulse = self.pumpUI.pulseSpin
        self.openSeedButton.clicked.connect(self.emitSeedPulseAndFre)
        self.setSeedPulse.setValue(self.initSeedPulse)
        self.setSeedFreValue = self.pumpUI.frequencySpin
        self.setSeedCurrent = self.pumpUI.currentSpin
        self.setSeedCurrent.setValue(self.initSeedCurrent)
        self.openAll = self.pumpUI.sourceOpen
        self.sendfirst = self.pumpUI.firstPumpSet
        self.sendfirst.clicked.connect(self.emitFirstPumpCurrent)
        self.sendsecond = self.pumpUI.secondPumpSet
        self.sendsecond.clicked.connect(self.emitSecondPumpCurrent)
        self.setFirstpump = self.pumpUI.firstpumpSpin
        self.setFirstpump.setValue(self.init1stCurrent)
        self.setSecondpump = self.pumpUI.secondpumpSpin
        self.setSecondpump.setValue(self.init2stCurrent)
        self.closeAll = self.pumpUI.sourceClose
        self.pumpUI.firstpumpSpin.setMaximum(1000)
        self.pumpUI.secondpumpSpin.setMaximum(10000)
        self.pumpUI.secondpumpSpin.setSingleStep(500)




    def enableClosePort(self):
        if self.setSeedPulse.text()[:-2] > self.initSeedPulse :
            self.canClosePort = False
        print(self.canClosePort)
        if self.setSeedFreValue.texttext()[:-3] > self.initSeedFre :
            self.canClosePort = False
        print(self.canClosePort)
        if self.setSeedCurrent.text()[:-2] > self.initSeedCurrent:
            self.canClosePort = False
        print(self.canClosePort)
        if self.setFirstpump.text()[:-2] > self.init1stCurrent :
            self.canClosePort = False
        print(self.canClosePort)
        if self.setSecondpump.text()[:-2] > self.init2stCurrent :
            self.canClosePort = False
        print(self.canClosePort)

    def seedSignalSet(self, seedcurrent, seedpulse, seedfrequece):
        self.seedcurrent = seedcurrent
        self.setSeedCurrent.setValue(self.seedcurrent)
        self.seedpulse = seedpulse
        self.setSeedPulse.setValue(self.seedpulse)
        self.seedfrequece = seedfrequece
        self.setSeedFreValue.setValue(self.seedfrequece)

    def firstCurrentSet(self,value):
        self.firstcurrent = value
        self.setFirstpump.setValue(self.firstcurrent)

    def secondCurrentSet(self,value):
        self.secondcurrent = value
        self.setSecondpump.setValue(self.secondcurrent)

#==============================================================================
# Get, set
#==============================================================================

    def setPowerShowList(self,lst):
        self.powerShow.powerList = lst
        self.powerShow.updateFigure()

    def set_queue(self, queue):
        self.queue = queue

    def set_end_cmd(self, end_cmd):
        self.end_cmd = end_cmd

    # def set_autoscroll(self, value):
    #     self.autoscroll = value

    def set_port(self, value):
        self.portEdit.clear()
        self.portEdit.insert(value)

    def getSrcPort(self):
        self.lastpick['srcPort'] = self.portEdit.currentIndex()
        return self.portEdit.currentText()

    def getSrcBaudrate(self):
        self.lastpick['srcBaud'] = self.baundrateMenu.currentIndex()
        return self.baundrateMenu.currentText()[:-5]

    def getPumpPort(self):
        self.lastpick['pumpPort'] = self.portUI.portPump.currentIndex()
        return self.portUI.portPump.currentText()

    def getPumpBaudrate(self):
        self.lastpick['pumpBaud'] = self.portUI.baundratePump.currentIndex()
        return self.portUI.baundratePump.currentText()[:-5]

    def get_cmd(self):
        return self.cmd_edit.text()


    def setCurrentValue(self, currentValue,timeValue):
        if currentValue is not None:
            self.currentValueList = currentValue
            self.currentTimeList = timeValue


    def Button2Plot(self):
        self.painter.update_figure()

    def closeEvent(self, event):
        self.last.saveLast(self.lastpick)
        self.end_cmd()
        QWidget.closeEvent(self, event)
        print('exit')

    def beginGui(self):
        self.update()

    def update_gui(self):
        self.process_incoming()
        self.update()

    def updataFigure(self,newtime,power):
        # self.setCurrentValue(currentValue, timeValue)
        self.painter.XYaxit(newtime,power)
        self.painter.update_figure()

        # print('update?')
        # self.update()

    def process_incoming(self):
        while self.queue.qsize():
            try:
                msg = self.queue.get(0)
                self.editer.appendPlainText(str(msg))
                #show to the textplain?
                #if self.autoscroll:
                self.editer.ensureCursorVisible()
                self.scroll_down()
            except Queue.empty:
                print('=== empty queue ===')

    def scroll_down(self):
        sb = self.editer.verticalScrollBar()
        sb.setValue(sb.maximum())


    def changePort(self):
        if not self.msg_sent:
            self.msg_sent = True
            self.emit_port_changed()
        else:
            self.msg_sent = False
            return None

#==============================================================================
# Signals
#==============================================================================

    def emit_send_data(self):
        self.send_data.emit(self.get_cmd())
        self.cmd_edit.clear()

    def emit_send_command(self,command):
        self.send_data.emit(command)
        self.cmd_edit.clear()

    def emit_br_src_changed(self, value):
        baudrate = self.baundrateMenu.itemText(value)[:-5]
        self.baudrate_src_changed.emit(baudrate)

    def emit_br_pump_changed(self, value):
        baudrate = self.baundrateMenu.itemText(value)[:-5]
        self.baudrate_pump_changed.emit(baudrate)

    # def emit_br_temp_changed(self, value):
    #     baudrate = self.baundrateMenu.itemText(value)[:-5]
    #     self.baudrate_temp_changed.emit(baudrate)

    def emit_port_changed(self):
        self.port_changed.emit(self.portEdit.text())
        self.portEdit.clear()

    def emitWriteSeedPulse(self):
        self.seedPulseChanged.emit(self.setSeedPulse.text()[:-2])

    def emitWriteSeedFre(self):
        self.seedFreValueChanged.emit(self.setSeedFreValue.text()[:-3])

    def emitFirstPumpCurrent(self):
        self.firstPumpChanged.emit(self.setFirstpump.text()[:-2])

    def emitSecondPumpCurrent(self):
        self.secondPumpChanged.emit(self.setSecondpump.text()[:-2])

    def emitSeedPulseAndFre(self):
        seedPulseAndFre = [self.setSeedPulse.text()[:-2],
            self.setSeedFreValue.text()[:-3],self.setSeedCurrent.text()[:-2]]
        # print(self.setSeedPulse.text()[:-2],
        #     self.setSeedFreValue.text()[:-2],self.setSeedCurrent.text()[:-2])
        self.seedPulseFreChanged.emit(seedPulseAndFre)

    def setUser(self,value):
        self.user = value
        if value.getName() is not False:
            self.toolBox.setTabEnabled(1,True)
            self.toolBox.setTabEnabled(2,True)
            self.toolBox.setTabEnabled(3,True)
            self.powerRecord.setUserID(self.user.getName())
            self.startSrcModel.emit(self.srcModelstarted)
            self.srcModelstarted = True
            self.startPumpModel.emit(self.pumpModelstarted)
            self.pumpModelstarted = True
            # self.startTempModel.emit(self.tempModelstarted)
            # self.tempModelstarted = True
            self.emitUsername.emit(self.user.getName())
            print('emit username:'******'NoneUser')
        print('use in view:',self.user.getName())

    def lastLogSave(self):
        self.last.saveLast(self.lastpick)
Ejemplo n.º 10
0
    def init_toolbar_attribute(self):
        self.toolbar_group_box.setStyleSheet("color: white;"
                                             "font-size: 20px;")
        toolbar_h_box_layout = QHBoxLayout()
        toolbar_h_box_layout.setGeometry(QRect(0, 0, 0, 0))
        toolbar_h_box_layout.setAlignment(QtCore.Qt.AlignLeft)
        prev_button = QPushButton()
        home_button = QPushButton()
        report_button = QPushButton()
        setting_button = QPushButton()
        alternate_button = QPushButton()
        setting_button.setIcon(QIcon("assets/setting.png"))
        setting_button.setStyleSheet("""
                    QPushButton
                    {
                        background-color: #5b5c5e;
                        padding: 2px;
                        min-height: 45px;
                        min-width: 45px;
                        border-radius: 10px;
                        border-bottom: 1.5px solid black;
                        border-right: 1px solid black;
                    }
                    QPushButton:hover:!pressed
                        {
                          background-color: #4d4d4d;
                        }
                    QPushButton:pressed
                        {
                          background-color: #5b5c5e;
                          border: 1px solid black;
                        }
                """)
        setting_button.setIconSize(QSize(40, 40))

        prev_button.setIcon(QIcon("assets/prev.png"))
        prev_button.setStyleSheet("""
                    QPushButton
                    {
                        background-color: #5b5c5e;
                        padding: 2px;
                        min-height: 45px;
                        min-width: 45px;
                        border-radius: 10px;
                        border-bottom: 1.5px solid black;
                        border-right: 1px solid black;
                    }
                    QPushButton:hover:!pressed
                        {
                          background-color: #4d4d4d;
                        }
                    QPushButton:pressed
                        {
                          background-color: #5b5c5e;
                          border: 1px solid black;
                        }
                """)
        prev_button.setIconSize(QSize(40, 40))

        home_button.setIcon(QIcon("assets/home.png"))
        home_button.setStyleSheet("""
                    QPushButton
                    {
                        background-color: #5b5c5e;
                        padding: 2px;
                        min-height: 45px;
                        min-width: 45px;
                        border-radius: 10px;
                        border-bottom: 1.5px solid black;
                        border-right: 1px solid black;
                    }
                    QPushButton:hover:!pressed
                        {
                          background-color: #4d4d4d;
                        }
                    QPushButton:pressed
                        {
                          background-color: #5b5c5e;
                          border: 1px solid black;
                        }
                """)
        home_button.setIconSize(QSize(40, 40))

        report_button.setIcon(QIcon("assets/report.png"))
        report_button.setStyleSheet("""
                    QPushButton
                    {
                        background-color: #5b5c5e;
                        padding: 2px;
                        min-height: 45px;
                        min-width: 45px;
                        border-radius: 10px;
                        border-bottom: 1.5px solid black;
                        border-right: 1px solid black;
                    }
                    QPushButton:hover:!pressed
                        {
                          background-color: #4d4d4d;
                        }
                    QPushButton:pressed
                        {
                          background-color: #5b5c5e;
                          border: 1px solid black;
                        }
                """)

        alternate_button.setIcon(QIcon("assets/alternate.png"))
        alternate_button.setStyleSheet("""
                            QPushButton
                            {
                                background-color: #5b5c5e;
                                padding: 2px;
                                min-height: 45px;
                                min-width: 45px;
                                border-radius: 10px;
                                border-bottom: 1.5px solid black;
                                border-right: 1px solid black;
                            }
                            QPushButton:hover:!pressed
                                {
                                  background-color: #4d4d4d;
                                }
                            QPushButton:pressed
                                {
                                  background-color: #5b5c5e;
                                  border: 1px solid black;
                                }
                        """)

        report_button.setIconSize(QSize(40, 40))
        alternate_button.setIconSize(QSize(40, 40))
        report_button.clicked.connect(self.open_history_report)
        setting_button.clicked.connect(self.open_preferences)
        alternate_button.clicked.connect(self.open_alternate)

        # toolbar_h_box_layout.addWidget(prev_button)
        toolbar_h_box_layout.addWidget(home_button)
        toolbar_h_box_layout.addWidget(report_button)
        toolbar_h_box_layout.addWidget(alternate_button)
        toolbar_h_box_layout.addWidget(setting_button)
        self.toolbar_group_box.setLayout(toolbar_h_box_layout)
Ejemplo n.º 11
0
class MyWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.my_balance = 0
        self.database = ['zero']
        self.setGeometry(450, 200, 400, 400)
        self.setWindowIcon(QIcon('icon.png'))

        self.topLayout = QHBoxLayout()
        self.topLayout.setGeometry(QtCore.QRect(5, 5, 390, 50))
        self.mainLayout = QVBoxLayout()

        self.btn = QPushButton(self)
        self.btn.setText("Доход")
        self.btn.clicked.connect(self.btn_plus_money)

        self.btn_2 = QPushButton(self)
        self.btn_2.setText("Расход")
        self.btn_2.clicked.connect(self.btn_minus_money)

        self.clear_button = QPushButton(self)
        self.clear_button.setText('Очистить')
        self.clear_button.clicked.connect(self.clear_button_clicked)

        self.itemsLayout = QVBoxLayout()

        self.itemsLayout.addWidget(lining())

        with open('database.txt', 'r') as file:
            file = open('database.txt', 'r')
            if file.read():
                file.close()
                with open('database.txt', 'r') as f:
                    self.database = f.readline().split('#')

                    for widget in self.database[1:]:
                        widget = widget.split()
                        corrective = QHBoxLayout()
                        corrective.addWidget(QLabel(widget[0]))
                        corrective.addWidget(QLabel(widget[-1]))
                        self.itemsLayout.addLayout(corrective)
                        self.itemsLayout.addWidget(lining())

                    self.my_balance = int(self.database[0])

        self.scrollWidget = QWidget()
        self.scrollWidget.setLayout(self.itemsLayout)

        self.scrollArea = QScrollArea()
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setWidget(self.scrollWidget)

        self.balance = QLabel(f'Ваш Баланс: {str(self.my_balance)}', self)

        self.topLayout.addWidget(self.clear_button)
        self.topLayout.addWidget(self.btn)
        self.topLayout.addWidget(self.btn_2)
        self.topLayout.addWidget(self.balance)
        self.mainLayout.addLayout(self.topLayout)
        self.mainLayout.addWidget(self.scrollArea)

        self.setLayout(self.mainLayout)

    def clear_button_clicked(self):
        QMessageBox.about(self, 'Информация', 'Перезапустите приложение')

        f = open('database.txt', 'w')
        f.write('')
        f.close()

    def btn_plus_money(self):
        corrective = QHBoxLayout()
        self.show_dialog_for_plus()
        date = QLabel(dating(), self)
        corrective.addWidget(date)
        corrective.addWidget(self.profit)
        self.itemsLayout.addLayout(corrective)
        self.itemsLayout.addWidget(lining())

    def show_dialog_for_plus(self):
        cash, ok = QInputDialog.getText(self, 'Доход', 'Сколько получили?')

        if ok:
            print(self.database)
            self.profit = QLabel(f'+{str(cash)}', self)
            self.my_balance += int(cash)
            self.balance.setText(f'Ваш баланс: {str(self.my_balance)}')
            self.database[0] = str(self.my_balance)
            self.database.append(' '.join([dating(), f'+{cash}']))
            f = open('database.txt', 'w')
            f.write('#'.join(self.database))
            f.close()

    def btn_minus_money(self):
        corrective = QHBoxLayout()
        self.show_dialog_for_minus()
        date = QLabel(dating(), self)
        corrective.addWidget(date)
        corrective.addWidget(self.outgo)
        self.itemsLayout.addLayout(corrective)
        self.itemsLayout.addWidget(lining())

    def show_dialog_for_minus(self):
        cash, ok = QInputDialog.getText(self, 'Расход', 'Сколько потратили?')

        if ok:
            self.outgo = QLabel(f'-{str(cash)}', self)
            self.my_balance -= int(cash)
            self.balance.setText(f'Ваш баланс: {str(self.my_balance)}')
            self.database[0] = str(self.my_balance)
            self.database.append(' '.join([dating(), f'-{cash}']))
            f = open('database.txt', 'w')
            f.write('#'.join(self.database))
            f.close()