Esempio n. 1
0
class Demo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle("颜色对话框")
        #添加组件
        self.button = QPushButton('变色', self)
        self.q_frame = QFrame(self)
        q = QColor(0, 0, 0)
        #创建颜色
        self.q_frame.setStyleSheet("QWidget { background-color: %s }" %
                                   q.name())
        #初始frame
        self.q_frame.resize(300, 300)
        #布局
        layout = QHBoxLayout()
        layout.addWidget(self.button)
        layout.addWidget(self.q_frame)
        self.setLayout(layout)
        #连接信号槽
        self.button.clicked.connect(self.showColo)

    def showColo(self):
        col = QColorDialog.getColor()
        if col.isValid():
            #检查col的值是否有效
            self.q_frame.setStyleSheet("QWidget { background-color: %s }" %
                                       col.name())
        pass
Esempio n. 2
0
    def createBox(self):
        box = QFrame()
        box.resize(self.width(), self.height() / 4)
        box.setStyleSheet("background-color:#f5f5ef")
        box.setFrameShape(QFrame.Box)
        font = QFont("Times new roman", 18)

        layoutBox = QHBoxLayout(box)
        layoutBox.setAlignment(Qt.AlignVCenter)

        textlign = QLabel("Get Info", box)
        textlign.setObjectName("ligne")
        textlign.setAlignment(Qt.AlignLeft)
        textlign.setFont(font)
        textlign.setStyleSheet("color:black")

        texttemps = QLabel("", box)
        texttemps.setObjectName("time")
        texttemps.setAlignment(Qt.AlignRight)
        texttemps.setFont(font)
        texttemps.setStyleSheet("color:black")

        layoutBox.addWidget(textlign)
        layoutBox.addWidget(texttemps)

        layoutBox.setAlignment(textlign, Qt.AlignLeft)
        layoutBox.setAlignment(texttemps, Qt.AlignRight)

        box.setLayout(layoutBox)

        return box
Esempio n. 3
0
    def createBox(self):
        box = QFrame()
        box.resize(self.width(), self.height() / 6)
        box.setStyleSheet("background-color:#f5f5ef")
        box.setFrameShape(QFrame.Box)
        font = QFont("Times new roman", 15)

        layoutBox = QHBoxLayout(box)
        layoutBox.setAlignment(Qt.AlignVCenter)
        layoutBox.setContentsMargins(5, 0, 0, 0)

        textTime = QLabel("Get Info", box)
        textTime.setObjectName("time")
        textTime.setAlignment(Qt.AlignLeft)
        textTime.setFont(font)
        textTime.setStyleSheet("color:black")
        textTime.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)

        textNews = QLabel("", box)
        textNews.setObjectName("news")
        textNews.setAlignment(Qt.AlignLeft)
        textNews.setFont(font)
        textNews.setStyleSheet("color:black")

        layoutBox.addWidget(textTime)
        layoutBox.addWidget(textNews)

        layoutBox.setAlignment(textTime, Qt.AlignTop)
        layoutBox.setAlignment(textNews, Qt.AlignLeft)

        box.setLayout(layoutBox)

        return box
Esempio n. 4
0
class ExpressionForm(QFrame):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.tableWidget = QTableWidget(self)
        self.setStyleSheet("background-color:transparent;")
        self.resize(1050, 700)
        self.move(0, 0)
        self.tableWidget.resize(500, 260)
        self.tableWidget.move(280, 200)
        self.frame = QFrame(self)
        self.frame.resize(500, 50)
        self.frame.move(280, 460)
        self.frame.setStyleSheet("background-color:white")
        self.make_icon()

    def make_icon(self):
        self.tableWidget.setShowGrid(False)
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.horizontalHeader().setVisible(False)
        self.tableWidget.setStyleSheet('''
        QTableWidget {border:10px solid white;background-color:white}
        QTableWidget:item:hover {background-color:rgb(230,230,230);}''')
        self.tableWidget.setRowCount(6)
        self.tableWidget.setColumnCount(12)
        self.tableWidget.setIconSize(QtCore.QSize(40, 40))
        for i in range(6):
            self.tableWidget.setRowHeight(i, 40)
            for j in range(12):
                self.tableWidget.setColumnWidth(j, 40)
                head_pic = QTableWidgetItem()
                head_pic.setToolTip(expression_dic["10%d%d.png" % (i, j)])
                icon = QtGui.QIcon("expression/fun/10%d%d.png" % (i, j))
                head_pic.setIcon(QtGui.QIcon(icon))
                self.tableWidget.setItem(i, j, head_pic)
Esempio n. 5
0
    def drawTop(self):
        topFrame = QFrame(self)
        topFrame.resize(self.width(), self.height() / 4)
        topFrame.setMinimumSize(self.width(), self.height() / 4)
        topFrame.setMaximumSize(self.width(), self.height() / 4 + 1)
        topFrame.setStyleSheet("background-color:yellow")
        imageLabel = QLabel(topFrame)
        image = QPixmap("ressources/logotl.svg")
        imageLabel.setPixmap(image)
        imageLabel.show()

        #top UI
        layoutTop = QHBoxLayout()
        layoutTop.setAlignment(Qt.AlignVCenter)
        font = QFont("Times new roman", 25)
        self.name = QLabel('tl-live', self)
        self.name.setAlignment(Qt.AlignRight)
        self.name.setFont(font)
        self.name.setStyleSheet("color:blue")

        layoutTop.addWidget(imageLabel)
        layoutTop.addWidget(self.name)
        layoutTop.setAlignment(self.name, Qt.AlignVCenter)

        topFrame.setLayout(layoutTop)
        topFrame.show()
Esempio n. 6
0
    def initUI(self):
        self.setWindowTitle(u'展示系统')
        self.resize(400, 300)
        #窗体居中
        # self.move(desk.width()/2-self.width()/2,100)
        myframe = QFrame(self)

        lbltitle = QLabel('图像内容识别技术和对比挖掘在网站分析中的应用展示', myframe)

        lbl1 = QLabel('用户名:', myframe)
        lbl1.move(30, 30)
        lbl2 = QLabel('密  码:', myframe)
        lbl2.move(30, 60)

        self.leUsername = QLineEdit(myframe)
        self.lePassword = QLineEdit(myframe)
        self.leUsername.move(80, 30)
        self.lePassword.move(80, 60)
        self.lePassword.setEchoMode(QLineEdit.Password)

        btnLogin = QPushButton('登录', myframe)
        btnQuit = QPushButton('退出', myframe)

        btnLogin.move(30, 120)
        btnQuit.move(110, 120)

        btnLogin.clicked.connect(self.myBtnClick)
        btnQuit.clicked.connect(self.myBtnClick)

        myframe.move(50, 50)
        myframe.resize(300, 300)

        #隐藏放大缩小按钮
        self.setWindowFlags(Qt.WindowCloseButtonHint)
        self.show()
Esempio n. 7
0
    def leftFrame(self):
        #创建FRAME
        leftframe = QFrame(self.centralwidget)
        leftframe.resize(600, 130)
        leftframe.setMaximumWidth(130)
        leftframe.setStyleSheet("background-color:green;border:0px")

        l_layout = QFormLayout(self)

        btn_1 = QPushButton("A")
        btn_1.setFixedSize(100, 30)  #固定尺寸
        btn_1.setIcon(QApplication.style().standardIcon(
            QStyle.StandardPixmap(27)))
        btn_1.clicked.connect(lambda: self.onClick(btn_1.text()))

        btn_2 = QPushButton("B")
        btn_2.setFixedSize(100, 30)
        btn_2.setIcon(QApplication.style().standardIcon(
            QStyle.StandardPixmap(27)))
        btn_2.clicked.connect(lambda: self.onClick(btn_2.text()))

        l_layout.addWidget(btn_1)
        l_layout.addWidget(btn_2)
        leftframe.setLayout(l_layout)
        return leftframe
Esempio n. 8
0
class LeftFrame(QFrame):
    def __init__(self, father, top):
        super().__init__(father)
        self.setObjectName('api_frame')
        self.father, self.top = father, top
        self.setGeometry(0, 0, 150, 300)

        self.all_api = self.top.all_api[1:]
        self.now_api = self.all_api[0]

        self.inside_frame = QFrame(self)
        self.inside_frame.resize(self.width(), len(self.all_api)*55+5)
        self.inside_frame.move(0, 0)
        self.inside_frame.setObjectName('inside')

        for idx in range(len(self.all_api)):
            label = ApiLabel(self.all_api[idx], self, self.top)
            label.move(7, idx*55+5)

    def wheelEvent(self, e):
        if self.inside_frame.height() > self.height():
            if e.angleDelta().y() > 0:
                self.inside_frame.move(0, self.inside_frame.y() + 60)
                if self.inside_frame.y() > 0:
                    self.inside_frame.move(0, 0)
            else:
                self.inside_frame.move(0, self.inside_frame.y() - 60)
                if self.inside_frame.y() < self.height()-self.inside_frame.height():
                    self.inside_frame.move(0, self.height()-self.inside_frame.height())
            self.father.list_scroll.bar.setValue(abs(self.inside_frame.y()))
Esempio n. 9
0
class LegendWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.initUI()

    def initUI(self):
        self.frame = QFrame(self)
        self.frame.setStyleSheet('background-color: white;')

        self.frames = []
        self.defaults = [
            "background-color: blue;",
            "background-color: rgba(0, 255, 0, 255);",
            "background-color: red;", "background-color: rgba(0, 0, 0, 255);"
        ]

        self.labels = []

        for i in range(4):
            f = QFrame(self)
            f.setStyleSheet(self.defaults[i])
            self.frames.append(f)

            l = QLabel(self)
            if i == 0:
                l.setText(": x")
            elif i == 1:
                l.setText(": y")
            elif i == 2:
                l.setText(": z")
            else:
                l.setText(": w")
            l.setStyleSheet(
                "font-weight: bold; font-size: 12px; color: rgba(150, 150, 150, 255);"
            )
            self.labels.append(l)

    def setGeometry(self, *__args):
        super().setGeometry(__args[0], __args[1], __args[2], __args[3])
        self.frame.resize(__args[2], __args[3])

        space = 10
        h = (__args[3] - space * 5) / 4
        if h * 2 + space * 2 > __args[2]:
            h = (__args[2] - space * 2) / 2
        w = h
        x = (__args[2] - w * 2 - 4) / 2
        y = space

        for i in range(4):
            frame = self.frames[i]
            frame.setGeometry(x, y, w, h)
            frame.setStyleSheet(self.defaults[i] + " border-radius: " +
                                repr(int(w / 2)) + "px;")

            label = self.labels[i]
            label.setGeometry(x + w + space, y,
                              __args[2] - (x + w + space + space), h)
            y = y + h + space
Esempio n. 10
0
class OtherStuffWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.initUI()

        self.d_m = DataManager()
        self.d_m.add_event_handler(EventType.pose, self.newPoseData)

    def initUI(self):
        self.frame = QFrame(self)
        self.frame.setStyleSheet('background-color: white;')

        self.gestures = []
        self.files = [
            "images/make_fist.png", "images/wave_right.png",
            "images/wave_left.png", "images/spread_fingers.png",
            "images/unlock_gesture.png"
        ]
        for i in range(5):
            g = QLabel(self)
            g.setPixmap(QPixmap(self.files[i]))
            g.setScaledContents(True)
            self.gestures.append(g)

    def setGeometry(self, *__args):
        super().setGeometry(__args[0], __args[1], __args[2], __args[3])
        self.frame.resize(__args[2], __args[3])

        space = 10
        x = space
        y = space
        w = (__args[2] - space * 3) / 2
        if w * 2 + space * 3 > __args[2]:
            w = (__args[2] - space * 3) / 2
        h = w
        if h * 3 + space * 4 > __args[3]:
            h = (__args[3] - space * 4) / 3
        w = h

        for i in range(5):
            g = self.gestures[i]
            g.setGeometry(x, y, w, h)
            if (i + 1) % 2 == 0:
                x = space
                y = y + space + h
            else:
                x = x + space + w
            g.setStyleSheet("border-radius: " + repr(int(w / 2)) +
                            "px; background-color: white;")

    def newPoseData(self, event):
        data = event["data"]
        pose = int(data["pose"])
        if pose == 0:
            for g in self.gestures:
                g.setStyleSheet(g.styleSheet().replace("yellow", "white"))
        else:
            g = self.gestures[pose - 1]
            g.setStyleSheet(g.styleSheet().replace("white", "yellow"))
Esempio n. 11
0
class RightFrame(QFrame):
    def __init__(self, father, top):
        super().__init__(father)
        self.setObjectName('tag_frame')
        self.father, self.top = father, top
        self.resize(322, 300)

        self.inside_frame = QFrame(self)
        self.inside_frame.setObjectName('right_inside')
        self.inside_frame.move(0, 0)

        self.now_api = None
        self.init()

    def init(self):
        self.now_api = eval('self.top.%s' % self.father.list.now_api)
        for c in self.inside_frame.children():
            delete(c)
        self.inside_frame.resize(
            self.width(),
            ceil(len(self.now_api.cate[1:]) / ((self.width()) // 95)) * 45)
        self.inside_frame.move(0, 0)
        for idx in range(len(self.now_api.cate[1:])):
            label = TagLabel(self.now_api.cate[1:][idx], self, self.top)
            label.move(95 * (idx % (self.width() // 95)),
                       (idx // (self.width() // 95)) * 45)

    def wheelEvent(self, e):
        if self.inside_frame.height() > self.height():
            if e.angleDelta().y() > 0:
                self.inside_frame.move(0, self.inside_frame.y() + 60)
                if self.inside_frame.y() > 0:
                    self.inside_frame.move(0, 0)
            else:
                self.inside_frame.move(0, self.inside_frame.y() - 60)
                if self.inside_frame.y(
                ) < self.height() - self.inside_frame.height():
                    self.inside_frame.move(
                        0,
                        self.height() - self.inside_frame.height())
            self.father.tags_scroll.bar.setValue(abs(self.inside_frame.y()))

    def resizeEvent(self, e):
        self.inside_frame.move(0, 0)
        self.inside_frame.resize(
            self.width(),
            ceil(len(self.now_api.cate[1:]) / ((self.width()) // 95)) * 45)
        self.father.tags_scroll.mid_frame.setGeometry(
            0, 0, 0, self.inside_frame.height())
        a_line = self.width() // 95
        for c in range(len(self.inside_frame.children())):
            self.inside_frame.children()[c].move(
                95 * (c % a_line) + (self.width() - a_line * 95) *
                (c % a_line) / a_line, 45 * (c // a_line) + 5)
Esempio n. 12
0
 def sign_up_window(self):
     self.sign_up_win.setWindowIcon(self.icon)
     self.sign_up_win.move(self.x() + 100, self.y() + 100)  # 移动一下注册窗口,以免和之前的重复
     frame = QFrame(self.sign_up_win)
     self.sign_up_win.setWindowFlag(Qt.Dialog)
     frame.resize(1000, 300)
     frame.setStyleSheet('background-image: url("./IMG/python.png"); background-repeat: no-repeat;')
     frame.move(40, 150)
     # 打开注册窗口时,清除原来的信息
     self.password_edit.setText('')
     self.username_edit.setText('')
     self.sign_up_win.show()
Esempio n. 13
0
    def add_widget_with_alignment(master, widget, layout, alignment=False):
        tmp_layout = layout()
        tmp_layout.addWidget(widget)
        tmp_layout.setSpacing(0)
        tmp_layout.setContentsMargins(0, 0, 0, 0)

        if alignment:
            tmp_layout.setAlignment(alignment)

        tmp_frame = QFrame(master)
        tmp_frame.resize(master.width(), 50)
        tmp_frame.setLayout(tmp_layout)

        return tmp_frame, tmp_layout
Esempio n. 14
0
 def createF(self, nameRecept):
     frame = QFrame()
     frame.resize(500, 200)
     pBtn = QPushButton(frame)
     pBtn.setStyleSheet(
         "QPushButton, QPushButton:focus, QPushButton:focus {\n"
         "font-weight: bold;\n"
         "border: 1px solid #00007f;\n"
         "border-radius: 15px;\n"
         "color: #00007f;\n"
         "background-color: #fff;\n"
         "}\n"
         "\n"
         "QPushButton:hover, QPushButton:hover:focus {\n"
         "font-weight: bold;\n"
         "border: 1px solid #00007f;\n"
         "border-radius: 15px;\n"
         "color: #00007f;\n"
         "background-color: #eaffff;\n"
         "}\n"
         "\n"
         "QPushButton:pressed,QPushButton:pressed:focus {\n"
         "font-weight: bold;\n"
         "border: 1px solid #00007f;\n"
         "border-radius: 15px;\n"
         "color: #fff;\n"
         "background-color: #00007f;\n"
         "}")
     gridLayout_14 = QGridLayout(frame)
     gridLayout_14.setObjectName("gridLayout_14")
     pBtn.setMaximumSize(QSize(100, 30))
     pBtn.setObjectName(nameRecept)
     gridLayout_14.addWidget(pBtn, 0, 1, 1, 1)
     label = QLabel(frame)
     font = QFont()
     font.setFamily("Open Sans")
     font.setPointSize(12)
     font.setBold(True)
     font.setWeight(75)
     label.setFont(font)
     label.setFrameShadow(QFrame.Sunken)
     label.setLineWidth(2)
     gridLayout_14.addWidget(label, 0, 0, 1, 1)
     label.setText(nameRecept)
     pBtn.setText("Открыть")
     pBtn.clicked.connect(lambda: self.receptWindow(nameRecept))
     return frame
class StockSourceDisplayPanel:
    def __init__(self,parent,world):
        self.parent = parent
        self.world = world
        self.scrollable_display = 0
        self.button_display = 0
        self.button_list = []
        self.initUI()

    def initUI(self):
        self.scrollable_display = QScrollArea(self.parent)
        self.button_display = QFrame(self.scrollable_display)
        self.scrollable_display.setWidget(self.button_display)
        self.populate_button_list()
        self.scrollable_display.show()
        self.button_display.show()

    def populate_button_list(self):
        stock_list = self.world.get_stock_source_list()
        vbox = QVBoxLayout()
        button_list = []

        i = 0

        for entry in stock_list:
            entry_button = QPushButton(entry.get_name())
            button_list.append(entry_button)
            vbox.addWidget(entry_button)
            entry_button.clicked.connect(functools.partial(self.parent.stockUI,i,stock_target=entry.get_stock()))
            i += 1

        vbox.addStretch(1)
        self.button_display.setLayout(vbox)
        self.resize()

    def destroy(self):
        self.scrollable_display.hide()
        self.button_display.hide()
        self.parent.resize(self.parent.size())
        self.button_display.destroy(False, False)
        self.scrollable_display.destroy(False, False)

    def resize(self):
        self.scrollable_display.resize(self.parent.size())
        frameWidth = self.scrollable_display.lineWidth()
        self.button_display.resize(self.scrollable_display.size().width()-(frameWidth*2),self.scrollable_display.size().height()-(frameWidth*2))
Esempio n. 16
0
class ChooseRandom(QDialog):
    def __init__(self, father, top):
        super().__init__(father, Qt.WindowCloseButtonHint)
        self.father, self.top = father, top
        self.setWindowTitle('随机选项')
        self.setObjectName('choose_random')
        self.move(self.father.x()+self.father.width()//2-200, self.father.y()+self.father.height()//2-150)

        self.list = LeftFrame(self, top)
        self.list_scroll = ScrollFrame(self, self.list, 140)

        self.color_frame = QFrame(self)
        self.color_frame.setObjectName('choose_mid')
        self.color_frame.move(155, 0)

        self.tags = RightFrame(self, top)
        self.tags.move(186, 0)
        self.tags_scroll = ScrollFrame(self, self.tags, 165)

        self.resize(500, 300)
        self.setMinimumSize(500, 300)

    def showEvent(self, e):
        self.move(self.father.x()+self.father.width()//2-self.width()//2, self.father.y()+self.father.height()//2-self.height()//2)

    def resizeEvent(self, e):
        self.list.resize(self.list.width(), self.height())

        self.color_frame.resize(3, self.height())

        self.tags.resize(self.width() - 190, self.height())

        for w in [self.list_scroll, self.tags_scroll]:
            w.resize(8, self.height())

    def resize_(self):
        self.tags.resize_()
        for w in [self.list_scroll, self.tags_scroll]:
            w.resize_()
Esempio n. 17
0
class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.selected_color_old = QColor(0, 0, 255)
        self.initUI()

    def initUI(self):
        btn = QPushButton()
        btn.resize(btn.sizeHint())

        btn.clicked.connect(self.showColorDialog)

        self.frame = QFrame(self)
        self.frame.resize(100, 100)
        self.frame.move(50, 50)
        self.frame.setStyleSheet("QWidget {background-color: %s}" %
                                 self.selected_color_old.name())

    def showColorDialog(self):
        selected_color = QColorDialog.getColor()

        if selected_color != self.selected_color_old:
            self.selected_color_old
Esempio n. 18
0
class ToolDialogFrame:
    def __init__(self, containers: QFrame,
                 page_containers_grid_layout: QGridLayout,
                 gui_concentrate_handler):
        super(ToolDialogFrame, self).__init__()
        self.containers = containers
        self.gui_concentrate_handler = gui_concentrate_handler
        self.page_containers_grid_layout: QGridLayout = page_containers_grid_layout

        self.frame_tools = QFrame(self.containers)
        self.frame_tools.resize(68, 78)
        self.frame_tools.setStyleSheet(ToolDialogFrameStyles.all_frame_style)
        self.frame_tools.setFrameShape(QFrame.StyledPanel)
        self.frame_tools.setFrameShadow(QFrame.Raised)
        self.frame_tools.setObjectName("frame_tools")

        self.frame_concat_to_frame_tools = QFrame(self.containers)
        self.frame_concat_to_frame_tools.resize(500, 168)
        self.frame_concat_to_frame_tools.setStyleSheet(
            ToolDialogFrameStyles.all_frame_style)
        self.frame_concat_to_frame_tools.setFrameShape(QFrame.StyledPanel)
        self.frame_concat_to_frame_tools.setFrameShadow(QFrame.Raised)
        self.frame_concat_to_frame_tools.setObjectName(
            "frame_concat_to_frame_tools")

        self.ease_out = QEasingCurve(QEasingCurve.OutQuad)
        self.ease_in = QEasingCurve(QEasingCurve.InQuad)

    def setup_ui(self, page_containers: QFrame):
        self.lbl_tools = QLabel(self.frame_tools)
        self.lbl_tools.setText("Tools")
        self.lbl_tools.setGeometry(QRect(0, 27, 68, 21))
        self.lbl_tools.setStyleSheet(ToolDialogFrameStyles.lbl_frames_style)
        self.lbl_tools.setAlignment(Qt.AlignCenter)
        self.lbl_tools.setObjectName("lbl_tools")

        self.lbl_ellipse_tools = QLabel(self.frame_tools)
        self.lbl_ellipse_tools.setGeometry(QRect(0, 43, 68, 21))
        self.lbl_ellipse_tools.setStyleSheet(
            ToolDialogFrameStyles.transparent_color_style)
        self.lbl_ellipse_tools.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/ellipse_logo.svg"))
        self.lbl_ellipse_tools.setAlignment(Qt.AlignCenter)
        self.lbl_ellipse_tools.setObjectName("lbl_ellipse_tools")

        self.lbl_close_frame_tools = QLabel(self.frame_concat_to_frame_tools)
        self.lbl_close_frame_tools.setGeometry(QRect(5, 5, 21, 21))
        self.lbl_close_frame_tools.setCursor(QCursor(Qt.PointingHandCursor))
        self.lbl_close_frame_tools.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/close_logo.svg"))
        self.lbl_close_frame_tools.setObjectName("lbl_close_frame_tools")

        self.card_forensic = QLabel(self.frame_concat_to_frame_tools)
        self.card_forensic.setText("Forensic")
        self.card_forensic.setGeometry(QRect(25, 25, 71, 46))
        self.card_forensic.setCursor(QCursor(Qt.PointingHandCursor))
        self.card_forensic.setStyleSheet(
            ToolDialogFrameStyles.cards_in_frame_style)
        self.card_forensic.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.card_forensic.setObjectName("[TOOL]-[FORENSIC]-Forensic Tools")

        self.pic_forensic = QLabel(self.frame_concat_to_frame_tools)
        self.pic_forensic.setGeometry(QRect(40, 10, 41, 31))
        self.pic_forensic.setCursor(QCursor(Qt.PointingHandCursor))
        self.pic_forensic.setStyleSheet(
            ToolDialogFrameStyles.transparent_color_style)
        self.pic_forensic.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/forensic_logo.svg"))
        self.pic_forensic.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.pic_forensic.setObjectName("pic_forensic")

        self.card_lot = QLabel(self.frame_concat_to_frame_tools)
        self.card_lot.setText("lot")
        self.card_lot.setGeometry(QRect(112, 25, 71, 46))
        self.card_lot.setCursor(QCursor(Qt.PointingHandCursor))
        self.card_lot.setStyleSheet(ToolDialogFrameStyles.cards_in_frame_style)
        self.card_lot.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.card_lot.setObjectName("[TOOL]-[IOT]-IOT Tools")

        self.pic_lot_logo = QLabel(self.frame_concat_to_frame_tools)
        self.pic_lot_logo.setGeometry(QRect(126, 10, 41, 31))
        self.pic_lot_logo.setCursor(QCursor(Qt.PointingHandCursor))
        self.pic_lot_logo.setStyleSheet(
            ToolDialogFrameStyles.transparent_color_style)
        self.pic_lot_logo.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/lot_logo.svg"))
        self.pic_lot_logo.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.pic_lot_logo.setObjectName("pic_lot_logo")

        self.card_network = QLabel(self.frame_concat_to_frame_tools)
        self.card_network.setGeometry(QRect(286, 25, 71, 46))
        self.card_network.setText("Network")
        self.card_network.setCursor(QCursor(Qt.PointingHandCursor))
        self.card_network.setStyleSheet(
            ToolDialogFrameStyles.cards_in_frame_style)
        self.card_network.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.card_network.setObjectName("[TOOL]-[NETWORK]-Network Tools")

        self.pic_network_logo = QLabel(self.frame_concat_to_frame_tools)
        self.pic_network_logo.setGeometry(QRect(300, 10, 41, 31))
        self.pic_network_logo.setCursor(QCursor(Qt.PointingHandCursor))
        self.pic_network_logo.setStyleSheet(
            ToolDialogFrameStyles.transparent_color_style)
        self.pic_network_logo.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/network_logo.svg"))
        self.pic_network_logo.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.pic_network_logo.setObjectName("pic_network_logo")

        self.card_dev_ops = QLabel(self.frame_concat_to_frame_tools)
        self.card_dev_ops.setText("DevOps")
        self.card_dev_ops.setGeometry(QRect(199, 25, 71, 46))
        self.card_dev_ops.setCursor(QCursor(Qt.PointingHandCursor))
        self.card_dev_ops.setStyleSheet(
            ToolDialogFrameStyles.cards_in_frame_style)
        self.card_dev_ops.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.card_dev_ops.setObjectName("[TOOL]-[DEVOPS]-DevOps Tools")

        self.pic_dev_ops_logo = QLabel(self.frame_concat_to_frame_tools)
        self.pic_dev_ops_logo.setGeometry(QRect(215, 10, 41, 31))
        self.pic_dev_ops_logo.setCursor(QCursor(Qt.PointingHandCursor))
        self.pic_dev_ops_logo.setStyleSheet(
            ToolDialogFrameStyles.transparent_color_style)
        self.pic_dev_ops_logo.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/dev_ops_logo.svg"))
        self.pic_dev_ops_logo.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.pic_dev_ops_logo.setObjectName("pic_dev_ops_logo")

        self.card_monitoring = QLabel(self.frame_concat_to_frame_tools)
        self.card_monitoring.setText("Monitoring")
        self.card_monitoring.setGeometry(QRect(373, 105, 71, 46))
        self.card_monitoring.setCursor(QCursor(Qt.PointingHandCursor))
        self.card_monitoring.setStyleSheet(
            ToolDialogFrameStyles.cards_in_frame_style)
        self.card_monitoring.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.card_monitoring.setObjectName(
            "[TOOL]-[MONITORING]-Monitoring Tools")

        self.pic_monitoring_logo = QLabel(self.frame_concat_to_frame_tools)
        self.pic_monitoring_logo.setGeometry(QRect(388, 90, 41, 31))
        self.pic_monitoring_logo.setCursor(QCursor(Qt.PointingHandCursor))
        self.pic_monitoring_logo.setStyleSheet(
            ToolDialogFrameStyles.transparent_color_style)
        self.pic_monitoring_logo.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/monitoring_logo.svg"))
        self.pic_monitoring_logo.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.pic_monitoring_logo.setObjectName("pic_monitoring_logo")

        self.card_web = QLabel(self.frame_concat_to_frame_tools)
        self.card_web.setText("Web")
        self.card_web.setGeometry(QRect(373, 25, 71, 46))
        self.card_web.setCursor(QCursor(Qt.PointingHandCursor))
        self.card_web.setStyleSheet(ToolDialogFrameStyles.cards_in_frame_style)
        self.card_web.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.card_web.setObjectName("[TOOL]-[WEB]-Web Tools")

        self.pic_web_logo = QLabel(self.frame_concat_to_frame_tools)
        self.pic_web_logo.setGeometry(QRect(388, 10, 41, 31))
        self.pic_web_logo.setCursor(QCursor(Qt.PointingHandCursor))
        self.pic_web_logo.setStyleSheet(
            ToolDialogFrameStyles.transparent_color_style)
        self.pic_web_logo.setPixmap(
            QPixmap(AppPaths.GUI_ASSETS_ICONS_PATH +
                    "/main_window/web_logo.svg"))
        self.pic_web_logo.setAlignment(Qt.AlignBottom | Qt.AlignHCenter)
        self.pic_web_logo.setObjectName("pic_web_logo")

        self.set_events(page_containers)

    def set_events(self, page_containers: QFrame):
        """this method for

        Arguments:
            page_containers {QFrame} -- [description]
        """
        UtilsClick.clickable(self.lbl_close_frame_tools).connect(
            lambda: self.set_visibility_effect(True, False, True))

        UtilsClick.clickable(self.card_dev_ops).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_dev_ops.objectName()))
        UtilsClick.clickable(self.pic_dev_ops_logo).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_dev_ops.objectName()))

        UtilsClick.clickable(self.card_web).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_web.objectName()))
        UtilsClick.clickable(self.pic_web_logo).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_web.objectName()))

        UtilsClick.clickable(self.card_lot).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_lot.objectName()))
        UtilsClick.clickable(self.pic_lot_logo).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_lot.objectName()))

        UtilsClick.clickable(self.card_forensic).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_forensic.objectName()))
        UtilsClick.clickable(self.pic_forensic).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_forensic.objectName()))

        UtilsClick.clickable(self.card_monitoring).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_monitoring.objectName()))
        UtilsClick.clickable(self.pic_monitoring_logo).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_monitoring.objectName()))

        UtilsClick.clickable(self.card_network).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_network.objectName()))
        UtilsClick.clickable(self.pic_network_logo).connect(
            partial(self.item_clicked,
                    page_containers=page_containers,
                    object_name=self.card_network.objectName()))

    def set_visibility_effect(self,
                              visibility: bool,
                              is_anime: bool,
                              is_close: bool = False):
        """this method for set visibility  frame tools

        Arguments:
            visibility {bool} -- [this argument show status visibility frame ]
            is_anime {bool} -- [this argument show anime effect]

        Keyword Arguments:
            is_close {bool} -- [this argument when you want close frame] (default: {False})
        """
        x_location_frame_tools: int = int(self.containers.width() - 81)

        x_location_frame_tools_concat: int = int(x_location_frame_tools + 10)

        if visibility and is_anime:
            # start animation
            self.do_anim_frame_tools(
                self.frame_tools, QRect(x_location_frame_tools, 280, 68, 78),
                QRect(x_location_frame_tools, 360, 68, 78))

            self.do_anim_concat_frame_tools(
                self.frame_concat_to_frame_tools,
                QRect(x_location_frame_tools_concat - 161, 280, 161, 78),
                QRect(
                    x_location_frame_tools_concat -
                    self.frame_concat_to_frame_tools.width(), 360, 500, 168))

        if is_close:
            # click close button
            self.do_anim_frame_tools(
                self.frame_tools, QRect(x_location_frame_tools, 360, 68, 78),
                QRect(x_location_frame_tools + self.containers.width(), 360,
                      68, 78))

            self.do_anim_concat_frame_tools(
                self.frame_concat_to_frame_tools,
                QRect(x_location_frame_tools_concat, 360, 500, 78),
                QRect(x_location_frame_tools_concat + self.containers.width(),
                      360, 500, 168))

        self.frame_tools.setVisible(visibility)
        self.frame_concat_to_frame_tools.setVisible(visibility)

        del x_location_frame_tools, x_location_frame_tools_concat

    def do_anim_frame_tools(self, obj: QFrame, start_location: QRect,
                            end_location: QRect):
        """ this method for do animation frame tools

            Arguments:
                obj {QFrame} -- [object must be do animation effect]
                start_location {QRect} -- [start location for anime]
                end_location {QRect} -- [end location for anime]
        """
        self.anim = QPropertyAnimation(obj, b"geometry")
        self.anim.setStartValue(start_location)
        self.anim.setEndValue(end_location)
        self.anim.setDuration(200)
        self.anim.setEasingCurve(self.ease_out)
        self.anim.start(QPropertyAnimation.DeleteWhenStopped)

    def do_anim_concat_frame_tools(self, obj: QFrame, start_location: QRect,
                                   end_location: QRect):
        """ this method for do animation frame concat to frame tools tools

            Arguments:
                obj {QFrame} -- [object must be do animation effect]
                start_location {QRect} -- [start location for anime]
                end_location {QRect} -- [end location for anime]
        """

        self.anim_2 = QPropertyAnimation(obj, b"geometry")
        self.anim_2.setStartValue(start_location)
        self.anim_2.setEndValue(end_location)
        self.anim_2.setDuration(200)
        self.anim_2.setEasingCurve(self.ease_out)
        self.anim_2.start(QPropertyAnimation.DeleteWhenStopped)

    def item_clicked(self, page_containers: QFrame, object_name: str):
        """ this method when call client push devops item

            Arguments:
                page_containers {QFrame} -- [devops layout in this layer]
        """
        # Delete Children in Parent

        from commons.constants.gui_class_names import GUIClassNames
        self.gui_concentrate_handler.notify(
            message={
                "data": {
                    "value": object_name
                },
                "params": None,
                "command": {
                    "name": "[CHANGE_NAME]"
                }
            },
            to=GUIClassNames.TOP_NAVIGATION_BAR_CONTAINERS)

        # delete all pervious widget that created on page_containers_grid_layout
        from utils.widget_helper import WidgetHelper
        widget_helper = WidgetHelper()
        widget_helper.delete_all_widget(self.page_containers_grid_layout)
        del widget_helper

        from ...central_page_maker.central_page_maker import CentralPageMaker
        self.page_containers_grid_layout.addWidget(
            CentralPageMaker().setup_ui(containers=page_containers,
                                        page_name=object_name), 0, 1, 1, 1)

        self.set_visibility_effect(True, False, True)
Esempio n. 19
0
class App(QMainWindow):
    def __init__(self, a):
        super().__init__()
        self.title = 'Shivsagar Hotel'
        self.left = 100
        self.top = 100
        self.width = 600
        self.height = 300
        self.a = a
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.setAutoFillBackground(True)
        p = self.palette()
        p.setColor(self.backgroundRole(), Qt.green)
        self.setPalette(p)

        #head image
        self.lh = QLabel(self)
        self.lh.move(0, 0)
        self.lh.resize(600, 200)
        self.head = QPixmap('head.png')
        self.lh.setPixmap(self.head)
        self.lh.resize(self.head.width(), self.head.height())

        self.back = QPushButton("Back", self)
        self.back.move(550, 20)
        self.back.resize(40, 20)
        self.back.clicked.connect(self.backclick)

        #main page
        #h1
        self.frame1 = QFrame(self)
        self.frame1.setStyleSheet("color: rgb(0,0,255)")
        self.frame1.move(0, 75)
        self.frame1.resize(299, 110)
        self.frame1.setAutoFillBackground(True)
        self.frame1.setStyleSheet(
            "QWidget {background-color: Qcolor(0,0,255) } ")

        self.i1 = QLabel(self.frame1)
        self.i1.move(0, 0)
        self.i1.resize(299, 110)
        self.i1.setPixmap(QPixmap('thalli.jpg'))
        self.i1.resize(self.i1.width(), self.i1.height())

        self.h1 = QLabel("Special Talli    ₹150", self.frame1)
        self.h1.setFont(QFont('SansSerif', 20))
        self.h1.setStyleSheet(
            "QLabel {background-color: rgba(255, 255, 255, 10); color :yellow ;}"
        )
        self.h1.move(15, 65)
        self.h1.resize(300, 50)

        self.s1 = QPushButton("Select", self.frame1)
        self.s1.move(260, 5)
        self.s1.resize(38, 16)
        self.s1.setFont(QFont('SansSerif', 10))
        self.s1.setStyleSheet("border:1px solid lightblue; ")
        self.s1.clicked.connect(self.hotel1)

        #h2
        self.frame2 = QFrame(self)
        self.frame2.setStyleSheet("color: rgb(0,0,255)")
        self.frame2.move(300, 75)
        self.frame2.resize(300, 110)
        self.frame2.setAutoFillBackground(True)
        self.frame2.setStyleSheet(
            "QWidget {background-color: Qcolor(0,0,255)}")

        self.i2 = QLabel(self.frame2)
        self.i2.move(0, 0)
        self.i2.resize(300, 110)
        self.i2.setPixmap(QPixmap('manchu.jpg'))
        self.i2.resize(self.i1.width(), self.i1.height())

        self.h2 = QLabel("Dry Manchurian    ₹150", self.frame2)
        self.h2.setFont(QFont('SansSerif', 20))
        self.h2.setStyleSheet(
            "QLabel {background-color: rgba(255, 255, 255, 10); color :yellow ;}"
        )
        self.h2.move(15, 65)
        self.h2.resize(300, 50)

        self.s2 = QPushButton("Select", self.frame2)
        self.s2.move(260, 5)
        self.s2.resize(38, 16)
        self.s2.setFont(QFont('SansSerif', 10))
        self.s2.setStyleSheet("border:1px solid lightblue; ")
        self.s2.clicked.connect(self.hotel2)

        #h3
        self.frame3 = QFrame(self)
        self.frame3.setStyleSheet("color: rgb(0,0,255)")
        self.frame3.move(0, 186)
        self.frame3.resize(299, 110)
        self.frame3.setAutoFillBackground(True)
        self.frame3.setStyleSheet(
            "QWidget {background-color: Qcolor(0,0,255)}")

        self.i3 = QLabel(self.frame3)
        self.i3.move(0, 0)
        self.i3.resize(300, 110)
        self.i3.setPixmap(QPixmap('desert.jpg'))
        self.i3.resize(self.i1.width(), self.i1.height())

        self.h3 = QLabel("Dessert    ₹200", self.frame3)
        self.h3.setFont(QFont('SansSerif', 20))
        self.h3.setStyleSheet(
            "QLabel {background-color: rgba(255, 255, 255, 10); color :yellow ;}"
        )
        self.h3.move(15, 65)
        self.h3.resize(300, 50)

        self.s3 = QPushButton("Select", self.frame3)
        self.s3.move(260, 5)
        self.s3.resize(38, 16)
        self.s3.setFont(QFont('SansSerif', 10))
        self.s3.setStyleSheet("border:1px solid lightblue; ")
        self.s3.clicked.connect(self.hotel3)

        #h4
        self.frame4 = QFrame(self)
        self.frame4.setStyleSheet("color: rgb(0,0,255)")
        self.frame4.move(300, 186)
        self.frame4.resize(299, 110)
        self.frame4.setAutoFillBackground(True)
        self.frame4.setStyleSheet(
            "QWidget {background-color: Qcolor(0,0,255)}")

        self.i4 = QLabel(self.frame4)
        self.i4.move(0, 0)
        self.i4.resize(300, 110)
        self.i4.setPixmap(QPixmap('noodles.jpg'))
        self.i4.resize(self.i1.width(), self.i1.height())

        self.h4 = QLabel("Fry Noodles    ₹150", self.frame4)
        self.h4.setFont(QFont('SansSerif', 20))
        self.h4.setStyleSheet(
            "QLabel {background-color: rgba(255, 255, 255, 10); color :yellow ;}"
        )
        self.h4.move(15, 65)
        self.h4.resize(300, 50)

        self.s4 = QPushButton("Select", self.frame4)
        self.s4.move(260, 5)
        self.s4.resize(38, 16)
        self.s4.setFont(QFont('SansSerif', 10))
        self.s4.setStyleSheet("border:1px solid lightblue; ")
        self.s4.clicked.connect(self.hotel4)

        self.show()

    def hotel1(self):
        c = self.a
        que = "INSERT INTO " + c + " (food, hotel, rupees, date) VALUES (%s, %s, %s, %s)"
        now = QDate.currentDate().toPyDate()
        print(now)
        vala = ('Special thalli', 'Shivsagar hotel', '150', now)
        mycu.execute(que, vala)
        conn.commit()
        QMessageBox.question(self, 'Shivsagar hotel', "Food added to list")

    def hotel2(self):
        c = self.a
        que = "INSERT INTO " + c + " (food, hotel, rupees, date) VALUES (%s, %s, %s, %s)"
        now = QDate.currentDate().toPyDate()
        print(now)
        vala = ('Dry  Manchurian', 'Shivsagar hotel', '150', now)
        mycu.execute(que, vala)
        conn.commit()
        QMessageBox.question(self, 'Shivsagar hotel', "Food added to list")

    def hotel3(self):
        c = self.a
        que = "INSERT INTO " + c + " (food, hotel, rupees, date) VALUES (%s, %s, %s, %s)"
        now = QDate.currentDate().toPyDate()
        print(now)
        vala = ('Dessert', 'Shivsagar hotel', '200', now)
        mycu.execute(que, vala)
        conn.commit()
        QMessageBox.question(self, 'Shivsagar hotel', "Food added to list")

    def hotel4(self):
        c = self.a
        que = "INSERT INTO " + c + " (food, hotel, rupees, date) VALUES (%s, %s, %s, %s)"
        now = QDate.currentDate().toPyDate()
        print(now)
        vala = ('Fry Noodles', 'Shivsagar hotel', '150', now)
        mycu.execute(que, vala)
        conn.commit()
        QMessageBox.question(self, 'Shivsagar hotel', "Food added to list")

    def backclick(self):
        from main import App
        self.m = App(self.a)
        self.m.show()
        self.close()
Esempio n. 20
0
class Main(QWidget):
    image = None

    def __init__(self):
        self.model = load_model("model_256.h5")
        super().__init__()
        # For the Window's Basic
        self.setStyleSheet(open("SpyBot.qss").read())
        self.setWindowTitle(
            "Image Recogniser Built On Tensorflow/Keras with CIFAR-10 Dataset")
        self.resize(QSize(640, 480))

        # For the Splitter
        self.hbox = QHBoxLayout()
        self.top = QFrame()
        self.top.resize(QSize(640, 480))
        self.top.setFrameShape(QFrame.StyledPanel)

        self.bottom = QFrame()
        self.bottom.resize(QSize(640, 480))
        self.bottom.setFrameShape(QFrame.StyledPanel)

        splitter = QSplitter(Qt.Horizontal)
        splitter.addWidget(self.top)
        splitter.addWidget(self.bottom)

        self.hbox.addWidget(splitter)
        self.setLayout(self.hbox)

        # The Left Frame
        vbox1 = QVBoxLayout()
        open_bt = QPushButton("Open Image")
        open_bt.clicked.connect(self.open_image)
        self.img_frame = QLabel(img_frm_txt)
        # self.img_frame.setAlignment(Qt.AlignCenter)
        vbox1.addWidget(open_bt)
        vbox1.addWidget(self.img_frame)

        hbox2 = QHBoxLayout()
        pred_bt = QPushButton("Predict")
        pred_bt.clicked.connect(self.predict)
        canc_bt = QPushButton("Cancel")
        canc_bt.clicked.connect(self.cancel)
        hbox2.addWidget(pred_bt)
        hbox2.addWidget(canc_bt)

        vbox1.addLayout(hbox2)
        self.top.setLayout(vbox1)

        vbox2 = QVBoxLayout()

        hbox3 = QHBoxLayout()
        self.prediction_label = QLabel("No Image Selected Yet")
        self.prediction_label.setFont(QFont("courier new"))
        hbox3.addWidget(self.prediction_label)
        vbox2.addLayout(hbox3)

        hbox4 = QHBoxLayout()
        pred_graph_bt = QPushButton("Show Prediction\nDetails as a Graph")
        pred_graph_bt.clicked.connect(self.prediction_details)
        model_graph_bt = QPushButton("Show Model\nDetails as a Graph")
        model_graph_bt.clicked.connect(self.model_details)
        hbox4.addWidget(pred_graph_bt)
        hbox4.addWidget(model_graph_bt)
        vbox2.addLayout(hbox4)

        self.bottom.setLayout(vbox2)

    def open_image(self):
        try:
            file, f_type = QFileDialog.getOpenFileName(
                caption="Open The Image",
                filter="JPEG (*.jpg)",
                directory="C:/Users/admin/Desktop/Python")
            if file:
                self.image = plt.imread(file)
                self.img_frame.setPixmap(QPixmap(file))
                self.img_frame.setAlignment(Qt.AlignCenter)
        except Exception as excep:
            print(excep)

    def predict(self):
        self.label_dict = {
            0: 'aeroplane  ',
            1: 'automobile ',
            2: 'bird       ',
            3: 'cat        ',
            4: 'deer       ',
            5: 'dog        ',
            6: 'frog       ',
            7: 'horse      ',
            8: 'ship       ',
            9: 'truck      '
        }
        txt = ""
        self.pred_dict = {}
        try:
            self.image = resize(self.image, (32, 32, 3))
            self._pred = self.model.predict(np.array([self.image]))
            self.pred = self._pred[0]
            for i in range(len(self.pred)):  # 10
                self.pred_dict.update({self.pred[i]: i})
            self.pred = np.sort(self.pred)[::-1]
            for x in range(5):
                txt += f"{self.label_dict[self.pred_dict[self.pred[x]]].capitalize()} :{round(float(self.pred[x]), 5) * 100}%\n"
            self.prediction_label.setText(txt)
        except Exception as ex:
            print(ex)

    def cancel(self):
        self.img_frame.setText(img_frm_txt)
        self.img_frame.setAlignment(Qt.AlignLeft)
        self.img_frame.setAlignment(Qt.AlignVCenter)

    def prediction_details(self):
        try:
            x_axis = [x.strip() for x in self.label_dict.values()]
            y_axis = [x * 100 for x in self._pred[0]]
            bar = plt.bar(x_axis, y_axis)
            bar[y_axis.index(max(y_axis))].set_color('r')
            bar[y_axis.index(max(y_axis)) + 1].set_color('r')
            plt.ylim((1, 100))
            plt.xticks(rotation=30)
            plt.set_cmap('Dark2')
            plt.xlabel("Categories",
                       labelpad=4,
                       fontdict={
                           'family': 'consolas',
                           'fontsize': 15
                       })
            plt.show()
        except Exception as e:
            print(e)

    def model_details(self):
        try:
            (x_test, y_test) = cifar10.load_data()[1]
            print(x_test, y_test)
            acc = self.model.evaluate(x_test, y_test)
            print(acc)
        except Exception as e:
            print(e)
Esempio n. 21
0
class Example(QWidget):
    trigger = QtCore.pyqtSignal()

    def __init__(self, parent=None):
        super().__init__(parent, QtCore.Qt.Window)

        self.top_warehouse = QFrame(self)
        self.top_warehouse.setFrameShape(QFrame.StyledPanel)
        self.top_warehouse.resize(584, 75)
        self.top_warehouse.move(8, 10)

        self.top_route = QFrame(self)
        self.top_route.setFrameShape(QFrame.StyledPanel)
        self.top_route.resize(584, 170)
        self.top_route.move(8, 88)

        self.top_supply = QFrame(self)
        self.top_supply.setFrameShape(QFrame.StyledPanel)
        self.top_supply.resize(285, 110)
        self.top_supply.move(10, 92)

        self.top_consumption = QFrame(self)
        self.top_consumption.setFrameShape(QFrame.StyledPanel)
        self.top_consumption.resize(286, 110)
        self.top_consumption.move(304, 92)

        self.combo_route = QComboBox(self)
        self.combo_route.addItems(['1', '2', '3'])
        self.combo_route.move(150, 220)
        self.combo_route.resize(self.combo_route.sizeHint())
        """
        Data entry for supply
        """
        pars = parsing_tuple()
        self.combo_supply = QComboBox(self)
        self.combo_supply.addItems(pars)

        self.combo_weight_party = QComboBox(self)
        self.combo_weight_party.addItems(['20', '30', '40'])
        self.date_supply = QDateTimeEdit()

        vbox = QVBoxLayout()
        layout = QHBoxLayout(self)
        layout.addLayout(vbox)
        layout.addWidget(self.combo_supply)
        layout.addWidget(self.combo_weight_party)
        layout.addWidget(self.date_supply)
        layout.addStretch(1)
        """
        Data entry for warehouse
        """
        self.combo_warehouse = QComboBox(self)
        self.combo_warehouse.addItems(pars)
        self.combo_warehouse.move(150, 30)
        self.combo_warehouse.resize(self.combo_warehouse.sizeHint())

        self.lbl_warehouse = QLabel("Склады", self)
        self.lbl_warehouse.move(300, 30)
        """
        Data entry for consumption
        """
        self.combo_consumption = QComboBox(self)
        self.combo_consumption.addItems(pars)
        self.date_consumption = QDateTimeEdit()

        layout.addWidget(self.combo_consumption)
        layout.addWidget(self.date_consumption)

        self.check_route()
        self.check_warehouse()
        self.initUI()

    def initUI(self):
        btn_input = QPushButton('Ввести значения', self)
        btn_input.resize(btn_input.sizeHint())
        btn_input.move(420, 220)
        btn_input.clicked.connect(self.get_supply_consumption)

        btn_delete_route = QPushButton('Удалить маршруты', self)
        btn_delete_route.resize(btn_delete_route.sizeHint())
        btn_delete_route.move(310, 220)
        btn_delete_route.clicked.connect(self.delete_route)

        btn_delete_warehouse = QPushButton('Удалить склады', self)
        btn_delete_warehouse.resize(btn_delete_warehouse.sizeHint())
        btn_delete_warehouse.move(490, 55)
        btn_delete_warehouse.clicked.connect(self.delete_warehouse)

        btn_add_warehouse = QPushButton('Добавить склад', self)
        btn_add_warehouse.resize(btn_delete_route.sizeHint())
        btn_add_warehouse.move(40, 30)
        btn_add_warehouse.clicked.connect(self.update_warehouse)

        lbl_route = QLabel("Маршрут:", self)
        lbl_route.resize(lbl_route.sizeHint())
        lbl_route.move(100, 220)

        lbl_supply = QLabel("Точка поставки", self)
        lbl_supply.resize((lbl_supply.sizeHint()))
        lbl_supply.move(90, 93)

        lbl_consupmtion = QLabel("Точка потребления", self)
        lbl_consupmtion.resize(lbl_consupmtion.sizeHint())
        lbl_consupmtion.move(450, 93)

        lbl_supply_point = QLabel("Пункт", self)
        lbl_supply_point.resize(lbl_supply_point.sizeHint())
        lbl_supply_point.move(25, 115)

        lbl_weight_party = QLabel("Вес партии", self)
        lbl_weight_party.resize(lbl_weight_party.sizeHint())
        lbl_weight_party.move(70, 115)

        lbl_date_departure = QLabel("Дата отправления", self)
        lbl_date_departure.resize(lbl_date_departure.sizeHint())
        lbl_date_departure.move(145, 115)

        lbl_consumption_point = QLabel("Пункт", self)
        lbl_consumption_point.resize(lbl_consumption_point.sizeHint())
        lbl_consumption_point.move(420, 115)

        lbl_date_arrival = QLabel("Дата прибытия", self)
        lbl_date_arrival.resize(lbl_date_arrival.sizeHint())
        lbl_date_arrival.move(490, 115)

        self.setGeometry(300, 300, 600, 300)
        self.setWindowTitle('Выбрать параметры поставки груза')

    def check_route(self):
        routs, session = session_getting_route()
        before_route = 0
        for route in routs:
            if before_route != route.num_route:
                self.combo_route.removeItem(route.num_route - 1)
                before_route = route.num_route
        session.close()

    def delete_warehouse(self):
        session_delete_warehouse()
        self.check_warehouse()
        pars = parsing_tuple()
        self.combo_warehouse.clear()
        self.combo_supply.clear()
        self.combo_consumption.clear()
        self.combo_warehouse.addItems(pars)
        self.combo_supply.addItems(pars)
        self.combo_consumption.addItems(pars)

    def delete_route(self):
        """
        delete data before use program
        :return: nothing
        """
        session_clear_field()
        self.trigger.emit()
        pars = parsing_tuple()
        self.combo_warehouse.clear()
        self.combo_supply.clear()
        self.combo_consumption.clear()
        self.combo_route.clear()
        self.combo_warehouse.addItems(pars)
        self.combo_supply.addItems(pars)
        self.combo_consumption.addItems(pars)
        main()
        self.combo_route.addItems(['1', '2', '3'])

    def check_warehouse(self):
        str_warehouse = 'Склады:'
        name_warehouse = session_get_warehouse()
        for warehouse in name_warehouse:
            str_warehouse = str_warehouse + warehouse.name_point + ','
        self.lbl_warehouse.setText(str_warehouse)
        self.lbl_warehouse.adjustSize()

    def update_warehouse(self):
        warehouse = self.combo_warehouse.currentText()
        session_add_warehouse(warehouse)
        self.check_warehouse()
        pars = parsing_tuple()
        self.combo_warehouse.clear()
        self.combo_supply.clear()
        self.combo_consumption.clear()
        self.combo_warehouse.addItems(pars)
        self.combo_supply.addItems(pars)
        self.combo_consumption.addItems(pars)

    def get_supply_consumption(self):
        """
        Data collection from forms
        :return: nothing
        """
        supply = self.combo_supply.currentText()
        consumption = self.combo_consumption.currentText()
        route = self.combo_route.currentText()
        date_arrival = datetime.datetime(
            int(self.date_consumption.dateTime().toString("yyyy")),
            int(self.date_consumption.dateTime().toString("MM")),
            int(self.date_consumption.dateTime().toString("dd")),
            int(self.date_consumption.dateTime().toString("hh")))
        date_departure = datetime.datetime(
            int(self.date_supply.dateTime().toString("yyyy")),
            int(self.date_supply.dateTime().toString("MM")),
            int(self.date_supply.dateTime().toString("dd")),
            int(self.date_supply.dateTime().toString("hh")))
        weight = int(self.combo_weight_party.currentText())
        loading = loading_party(weight)
        id_supply, num_party, empty_truck = session_create2(
            weight=weight, supply=supply, date=date_departure, loading=loading)
        unloading = unloading_party(weight)
        travel_time = date_arrival - date_departure
        id_consumption = session_add_consumption(consumption=consumption,
                                                 date=date_arrival,
                                                 unloading=unloading,
                                                 party=num_party,
                                                 travel_time=travel_time.days,
                                                 weight=weight)
        agent = session_get_next_point()
        parsing(agent)
        if travel_time.days > 1:
            optimal_route, warehouse_point = search_route_warehouse(
                id_supply, id_consumption)
            session_add_warehouse_party(optimal_route, warehouse_point,
                                        num_party, loading, unloading)
        else:
            optimal_route = dijkstra(id_supply, id_consumption)
        lst_pars = lst_optimal(optimal_route)
        session_add_route(lst_pars, route, id_supply, empty_truck)
        update_graphic()
        self.trigger.emit()
        self.check_route()
class PlatinumCor(QWidget):
    def __init__(self):
        super().__init__()
        self.__initUI__()

    # Function Sets up the main screen
    def __initUI__(self):
        self.productList = {}
        try:
            self.database = platinumDatabase()
            products = self.database.cursor.execute(
                "SELECT Product_Code, Description FROM Products")
            for i in products:
                self.productList[i[0]] = i[1]
            print(self.productList)
        except:
            print("Failed To build productList")

        self.mainMenueScreen = QFrame()
        self.mainMenueScreen.setWindowTitle("Platinum Tool Kit")
        self.mainMenueScreen.setWindowIcon(
            QIcon("C:\Platinum\Icons\icon_p.ico"))
        self.mainMenueScreen.resize(600, 300)

        addRemoveTimeInvButton = QPushButton("Alter Sales Time")
        addRemoveTimeInvButton.setIcon(
            QIcon("C:\\Platinum\\Icons\\15minblue.ico"))
        addRemoveTimeInvButton.clicked.connect(self.addRemoveInvoiceTIme)
        # addRemoveTimeInvButton.setDisabled(True)

        alterInvoiceBUtton = QPushButton("Alter Invoices")
        alterInvoiceBUtton.setIcon(QIcon("C:\\Platinum\\Icons\\15min.ico"))
        alterInvoiceBUtton.clicked.connect(self.alterInvoice)
        # alterInvoiceBUtton.setDisabled(True)

        alterCashupsButton = QPushButton("Alter Cashups")
        alterCashupsButton.setIcon(
            QIcon("C:\Platinum\Icons\\reservations.ico"))
        alterCashupsButton.clicked.connect(self.alterInvoice)
        # alterCashupsButton.setDisabled(True)

        # Connect to other Database
        connectToother = QPushButton("Connect To other Database")

        mainGrid = QGridLayout()
        mainGrid.addWidget(addRemoveTimeInvButton, 0, 0)
        mainGrid.addWidget(alterInvoiceBUtton, 0, 1)
        mainGrid.addWidget(alterCashupsButton, 1, 0)
        mainGrid.addWidget(connectToother, 2, 0, 1, 2)
        self.mainMenueScreen.setLayout(mainGrid)
        self.mainMenueScreen.show()

    def alterInvoice(self):
        self.alterInvoceScreen = QFrame()
        self.alterInvoceScreen.setWindowTitle("Alter Invoice")
        self.alterInvoceScreen.setWindowIcon(
            QIcon("C:\\Platinum\\Icons\\15min.ico"))
        self.alterInvoceScreen.resize(700, 500)

        invoiceNUmber = QLineEdit()
        searchButton = QPushButton("Search")
        searchButton.setIcon(QIcon("C:\\Platinum\\Icons\\Preview.ico"))
        searchButton.clicked.connect(
            lambda: self.searchInvoice(invoiceNUmber.text()))

        self.alterInvoiceTable = QTableWidget()

        updateButton = QPushButton("Update Changes")
        updateButton.setIcon(QIcon("C:\\Platinum\\Icons\\STH.ico"))
        updateButton.clicked.connect(self.updateSalesJournal)

        maingrid = QGridLayout()
        maingrid.addWidget(QLabel("Invoice Number"), 0, 0)
        maingrid.addWidget(invoiceNUmber, 0, 1)
        maingrid.addWidget(searchButton, 0, 2)
        maingrid.addWidget(self.alterInvoiceTable, 1, 0, 1, 3)
        maingrid.addWidget(updateButton, 2, 0, 1, 3)

        self.alterInvoceScreen.setLayout(maingrid)
        self.alterInvoceScreen.show()

    def recalculateCashupTotals(self, cashup="0"):
        self.confirmation = QMessageBox
        line = cashup
        choice = self.confirmation.question(
            self, 'Confirmation',
            "Sales Journal has been updated \n Recalculate Cashup %s ?" % line,
            self.confirmation.Yes | self.confirmation.No)
        if choice == self.confirmation.Yes:
            taxablesales = 0.00
            tax = 0.00
            cashTotal = 0.00  # Cash_Sales_Value
            cardTotal = 0.00  # Card_Sales_Value
            chargeTotal = 0.00  # Charge_Sales_Value
            chequeTotal = 0.00  # Cheque_Sales_Value

            # Calculate Cash Total
            try:
                cashData = self.database.cursor.execute(
                    """SELECT Sales_Tax, Line_Total FROM Sales_Journal WHERE Function_Key =? AND Cashup_No=?""",
                    (9.0, int(line)))
                for cash in cashData:
                    cashTotal += cash[1]
                    tax += cash[0]
                    if cash[0] > 0:
                        taxablesales += cash[1]
            except:
                print("Failed TO sun cash")
            # Calculate Card Total
            try:
                cardData = self.database.cursor.execute(
                    """SELECT Sales_Tax, Line_Total FROM Sales_Journal WHERE Function_Key =? AND Cashup_No=?""",
                    (10.0, int(line)))
                for card in cardData:
                    cardTotal += card[1]
                    tax += card[0]
                    if card[0] > 0:
                        taxablesales += card[1]
            except:
                print("Failed TO sum cards")
            # Calculate Charge TOtals
            try:
                chargeData = self.database.cursor.execute(
                    """SELECT Sales_Tax, Line_Total FROM Sales_Journal WHERE Function_Key =? AND Cashup_No=?""",
                    (12.0, int(line)))
                for charge in chargeData:
                    chargeTotal += charge[1]
                    tax += charge[0]
                    if charge[0] > 0:
                        taxablesales += charge[1]
            except:
                print("Failed TO Sum Charge")
            # Calculate Cheque Total
            try:
                checkData = self.database.cursor.execute(
                    """SELECT Sales_Tax, Line_Total FROM Sales_Journal WHERE Function_Key =? AND Cashup_No=?""",
                    (11.0, int(line)))
                for check in checkData:
                    chequeTotal += check[1]
                    tax += check[0]
                    if check[0] > 0:
                        taxablesales += check[1]
            except:
                print("Failed TO Sum Charge")

            # Update Counters Table
            try:
                self.database.cursor.execute(
                    """UPDATE Counters SET Cash_Sales_Value=?, Card_Sales_Value=?, Charge_Sales_Value=?, Cheque_Sales_Value=?, TaxableSales_Value=? WHERE Cashup_No=?""",
                    (cashTotal, cardTotal, chargeTotal, chequeTotal,
                     taxablesales, int(line)))
                self.database.conn.commit()
            except:
                pass
            print(cashTotal, cardTotal, chargeTotal, chequeTotal, taxablesales)

    def updateSalesJournal(self):
        for i in range(self.alterInvoiceTable.rowCount()):
            functionKey = float(self.alterInvoiceTable.item(i, 6).text())
            lineNo = int(self.alterInvoiceTable.item(i, 0).text())
            if functionKey == 7.0:
                producCode = self.alterInvoiceTable.item(i, 1).text()
                qty = float(self.alterInvoiceTable.item(i, 3).text())
                tax = float(self.alterInvoiceTable.item(i, 4).text())
                linetotal = float(self.alterInvoiceTable.item(i, 5).text())
                self.database.cursor.execute(
                    """UPDATE Sales_Journal SET Product_Code=?, Qty=?, Sales_Tax=?, Line_Total=? WHERE Line_No =?""",
                    (producCode, qty, tax, linetotal, lineNo))
                self.database.conn.commit()
            elif functionKey == 9 or functionKey == 10 or functionKey == 11 or functionKey == 12:
                tax = float(self.alterInvoiceTable.item(i, 4).text())
                linetotal = float(self.alterInvoiceTable.item(i, 5).text())
                self.database.cursor.execute(
                    """UPDATE Sales_Journal SET Sales_Tax=?, Function_Key=?, Line_Total=? WHERE Line_No =?""",
                    (tax, functionKey, linetotal, lineNo))
                self.database.conn.commit()
        self.recalculateCashupTotals(self.alterInvoiceTable.item(i, 7).text())

    def searchInvoice(self, invoiceNumber):
        self.alterInvoiceTable.clear()
        horizontalLable = [
            "Line_No", "Product Code", "Description", "Qty", "Tax",
            "Line Total", "Function Key", "Cash Up No"
        ]
        self.alterInvoiceTable.setColumnCount(len(horizontalLable))
        self.alterInvoiceTable.setHorizontalHeaderLabels(horizontalLable)
        try:
            invoiceNumber = int(invoiceNumber)
            slip = list(
                self.database.cursor.execute(
                    "SELECT Line_No, Product_Code, Qty, Sales_Tax, Line_Total, Function_Key, Cashup_No FROM Sales_Journal WHERE Invoice_No = ?",
                    (invoiceNumber)))
            self.alterInvoiceTable.setRowCount(len(slip))
            row = 0
            for item in slip:
                lineNo = item[0]
                productCode = item[1]
                functionKey = item[5]
                cashupNO = item[6]
                if functionKey != 14:
                    try:
                        if functionKey == 9:
                            productName = "CASH SALE"
                        elif functionKey == 10:
                            productName = "CARD SALE"
                        elif functionKey == 11:
                            productName = "CHEQ SALE"
                        elif functionKey == 12:
                            productName = "CHARGE SALE"
                        else:
                            productName = self.productList[productCode]

                    except:
                        productName = " "
                    qty = item[2]
                    salesTax = item[3]
                    lineTotal = item[4]

                    self.alterInvoiceTable.setItem(
                        row, 0, QTableWidgetItem(str(lineNo)))
                    self.alterInvoiceTable.setItem(
                        row, 1, QTableWidgetItem(str(productCode)))
                    self.alterInvoiceTable.setItem(
                        row, 2, QTableWidgetItem(str(productName)))
                    self.alterInvoiceTable.setItem(row, 3,
                                                   QTableWidgetItem(str(qty)))
                    self.alterInvoiceTable.setItem(
                        row, 4, QTableWidgetItem(str(salesTax)))
                    self.alterInvoiceTable.setItem(
                        row, 5, QTableWidgetItem(str(lineTotal)))
                    self.alterInvoiceTable.setItem(
                        row, 6, QTableWidgetItem(str(functionKey)))
                    self.alterInvoiceTable.setItem(
                        row, 7, QTableWidgetItem(str(cashupNO)))
                    row += 1
                    #print(productCode, productName, qty, salesTax, lineTotal, functionKey)
                else:
                    self.alterInvoiceTable.setRowCount(
                        self.alterInvoiceTable.rowCount() - 1)
        except:
            self.displaySimple("Failed")

    def alterCashups(self):
        pass

    def addRemoveInvoiceTIme(self):
        self.toolFrame = QFrame()
        self.toolFrame.setWindowTitle("Platinum Sql Date Corrector")
        self.toolFrame.setWindowIcon(QIcon("C:\Platinum\Icons\icon_p.ico"))
        self.toolFrame.resize(600, 300)

        startDate = QDateEdit()
        startDate.setDisplayFormat("yyyy-MM-dd")
        startTime = QTimeEdit()
        startTime.setDisplayFormat("HH:mm:ss")

        endDate = QDateEdit()
        endDate.setDisplayFormat("yyyy-MM-dd")
        endTime = QTimeEdit()
        endTime.setDisplayFormat("HH:mm:ss")

        timeToAdd = QTimeEdit()
        timeToAdd.setDisplayFormat("HH:mm:ss")

        runButton = QPushButton("Add Script")
        runButton.clicked.connect(
            lambda: self.runScript(startDate.text(), startTime.text(
            ), endDate.text(), endTime.text(), timeToAdd.text()))

        subTractScript = QPushButton("Subtract Script")
        subTractScript.clicked.connect(
            lambda: self.runScript2(startDate.text(), startTime.text(
            ), endDate.text(), endTime.text(), timeToAdd.text()))

        maingrid = QGridLayout()
        maingrid.addWidget(QLabel("Start Date"), 0, 0)
        maingrid.addWidget(startDate, 0, 1)
        maingrid.addWidget(QLabel("Start Time"), 1, 0)
        maingrid.addWidget(startTime, 1, 1)
        maingrid.addWidget(QLabel("End Date"), 0, 2)
        maingrid.addWidget(endDate, 0, 3)
        maingrid.addWidget(QLabel("End Time"), 1, 2)
        maingrid.addWidget(endTime, 1, 3)
        maingrid.addWidget(QLabel("Time"), 2, 0)
        maingrid.addWidget(timeToAdd, 2, 1)
        maingrid.addWidget(runButton, 3, 0, 1, 4)
        maingrid.addWidget(subTractScript, 4, 0, 1, 4)

        self.toolFrame.setLayout(maingrid)
        self.toolFrame.show()

    # Add invoice TIme script
    def runScript(self, sD, sT, eD, eT, tA):
        try:
            start_Time = sD + " " + sT
            endTime = eD + " " + eT
            time_Add = tA
            runner = platinumDatabase()
            runner.script(start_Time, endTime, time_Add)
            self.displaySimple("Success")
        except:
            self.displaySimple("Failed")

    # Remove invoice TIme Script
    def runScript2(self, sD, sT, eD, eT, tA):
        try:
            start_Time = sD + " " + sT
            endTime = eD + " " + eT
            time_Add = tA
            runner = platinumDatabase()
            runner.script2(start_Time, endTime, time_Add)
            self.displaySimple("Success")
        except:
            self.displaySimple("Failed")

    def displaySimple(self, text="No TExt"):
        self.messageBox = QMessageBox()
        self.messageBox.setWindowTitle("Message")
        self.messageBox.setWindowIcon(QIcon("C:\Platinum\Icons\icon_p.ico"))
        self.messageBox.setText(text)
        self.messageBox.show()
Esempio n. 23
0
class TempleItem (QtWidgets.QGraphicsItem):
    SIZE_MULTIPLICATOR = 2
    def __init__(self,view, scene_coord,temple,size,parent=None):
        super (TempleItem,self).__init__(parent)
        #self.polygon  = self.getTriangle (size)
        self.rotation = 0.0
        self.color = QColor(0,0,125)
        self.name_visible = True
        self.name = temple.name
        self.model = temple
        self.view = view
        self.size = QSize(32,32)
        self.scene_coord = scene_coord
        #set flags
        self.setFlag(QGraphicsItem.ItemIgnoresTransformations)
        self.setFlag(QGraphicsItem.ItemSendsGeometryChanges)
        self.setFlag(QGraphicsItem.ItemIsSelectable)
        self.setFlag(QGraphicsItem.ItemIsMovable)
        
#     self.graphics_effect = QGraphicsColorizeEffect()
#     color = self.model.kingdom().color
#     self.graphics_effect.setColor(QColor(color.red(),color.green(),color.blue(),125))
#     self.setGraphicsEffect(self.graphics_effect )
#     self.graphics_effect.setEnabled(True)


        
        
    def boundingRect(self):
        return QtCore.QRectF(0,0,self.size.width(),self.size.height())
        



    def itemChange(self, change, value):
        if change == QGraphicsItem.ItemPositionHasChanged :
            self.model.position = value
            #pos = self.view.mapToScene(value.x(),value.y())
            lat,lon = self.scene_coord.SceneToLatLon(value.x(),value.y())
            self.model.changePosition (lat,lon)
            print ('new position ',self.model.position)
        else:
            return QGraphicsItem.itemChange(self,change,value)
    def paint (self,painter,option, widget):

        painter.setRenderHints(QtGui.QPainter.Antialiasing)
        painter.rotate(self.rotation)
        painter.translate(-16,-16) # taille fixe correspondant a la pixmap utilisee pour generer la geometry
        painter.scale(1.5,1.5)

        
        if self.isSelected() == True : 
            pen = QPen(QtCore.Qt.red)
            pen.setWidth(1)
        else:
            pen = QPen(QtCore.Qt.black)   
            pen.setWidth(1)
        painter.setPen(pen)
        radialGradient = QRadialGradient(self.size.width()/2, self.size.height()/2,self.size.width()*0.8, self.size.width(), self.size.height())
        radialGradient.setColorAt(0.0, QtCore.Qt.white)
        #radialGradient.setColorAt(0.2, self.heros.kingdom().color)
        if self.view.color_mode == ColorMode.Empire : 
            color = self.model.empire().color
        else :
            color = self.model.kingdom().color
        

        radialGradient.setColorAt(0.2, color)
        radialGradient.setColorAt(1.0, QtCore.Qt.black)
        painter.setBrush(QBrush(radialGradient))
        #brush = QBrush(self.color)
        #painter.setBrush(brush)
        geometry = self.model.empire().geometry
        #qDebug("info : map_item Temple : nombre de polygones %d"%len(geometry['polygon']))
        for p in geometry['polygon']:
            painter.drawPolygon(QPolygon(p))
#         
#         painter.drawPolygon(self.polygon)
#         path = os.path.join(Config().instance.path_to_icons(),'kingdom','32x32')
#         path+="/temple_artemis.png"
#         print ('path icon',path)
#         pix = QPixmap(path)
# 
#         painter.drawPixmap(-pix.width()/2.0,-pix.height()/2.0,pix)
        if self.name_visible == True :
            painter.setPen(QPen(QColor('black')))
            painter.translate(0,10)
            painter.drawText (self.boundingRect(),QtCore.Qt.AlignHCenter|QtCore.Qt.AlignBottom, self.name)

    def contextMenuEvent(self, event):
        menu = QMenu()
        testAction = QAction('Go Inside', None)
        testAction.triggered.connect(self.showTempleView)
        menu.addAction(testAction)
        menu.exec_(event.screenPos())
        event.accept()
    def showTempleView (self):
        self.frame = QFrame()
        self.frame.setWindowTitle(self.kingdom.name)
        self.frame.setObjectName("Frame")
        self.frame.resize(400, 300)
        self.frame.setFrameShape(QFrame.StyledPanel)
        self.frame.setFrameShadow(QFrame.Raised)
        self.verticalLayout = QVBoxLayout(self.frame)
        self.verticalLayout.setObjectName("verticalLayout")
        self.view = TempleView(self.frame)
        self.view.setTemple(self.kingdom)
        self.verticalLayout.addWidget(self.view)
        self.frame.show()
Esempio n. 24
0
    def setup_ui(self, frame: QtWidgets.QFrame) -> None:
        """Set up the user input window and initializes all the variables
                to create the user interface of the window."""
        frame.setObjectName("frame")
        frame.resize(778, 575)
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(frame.sizePolicy().hasHeightForWidth())
        frame.setSizePolicy(size_policy)
        self.cbox1 = QtWidgets.QComboBox(frame)
        self.cbox1.setGeometry(QtCore.QRect(60, 170, 231, 21))
        self.cbox1.setEditable(True)
        self.cbox1.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox1.setObjectName("cbox1")
        self.cbox1.addItem("")
        self.cbox2 = QtWidgets.QComboBox(frame)
        self.cbox2.setGeometry(QtCore.QRect(60, 220, 231, 21))
        self.cbox2.setEditable(True)
        self.cbox2.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox2.setObjectName("cbox2")
        self.cbox2.addItem("")
        self.cbox3 = QtWidgets.QComboBox(frame)
        self.cbox3.setGeometry(QtCore.QRect(60, 270, 231, 21))
        self.cbox3.setEditable(True)
        self.cbox3.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox3.setObjectName("cbox3")
        self.cbox3.addItem("")
        self.cbox4 = QtWidgets.QComboBox(frame)
        self.cbox4.setGeometry(QtCore.QRect(60, 320, 231, 21))
        self.cbox4.setEditable(True)
        self.cbox4.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox4.setObjectName("cbox4")
        self.cbox4.addItem("")
        self.cbox5 = QtWidgets.QComboBox(frame)
        self.cbox5.setGeometry(QtCore.QRect(60, 370, 231, 21))
        self.cbox5.setEditable(True)
        self.cbox5.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox5.setObjectName("cbox5")
        self.cbox5.addItem("")
        self.cbox6 = QtWidgets.QComboBox(frame)
        self.cbox6.setGeometry(QtCore.QRect(430, 170, 231, 21))
        self.cbox6.setEditable(True)
        self.cbox6.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox6.setObjectName("cbox6")
        self.cbox6.addItem("")
        self.cbox7 = QtWidgets.QComboBox(frame)
        self.cbox7.setGeometry(QtCore.QRect(430, 220, 231, 21))
        self.cbox7.setEditable(True)
        self.cbox7.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox7.setObjectName("cbox7")
        self.cbox7.addItem("")
        self.cbox8 = QtWidgets.QComboBox(frame)
        self.cbox8.setGeometry(QtCore.QRect(430, 270, 231, 21))
        self.cbox8.setEditable(True)
        self.cbox8.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox8.setObjectName("cbox8")
        self.cbox8.addItem("")
        self.cbox9 = QtWidgets.QComboBox(frame)
        self.cbox9.setGeometry(QtCore.QRect(430, 320, 231, 21))
        self.cbox9.setEditable(True)
        self.cbox9.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox9.setObjectName("cbox9")
        self.cbox9.addItem("")
        self.cbox10 = QtWidgets.QComboBox(frame)
        self.cbox10.setGeometry(QtCore.QRect(430, 370, 231, 21))
        self.cbox10.setEditable(True)
        self.cbox10.setSizeAdjustPolicy(
            QtWidgets.QComboBox.AdjustToMinimumContentsLength)
        self.cbox10.setObjectName("cbox10")
        self.cbox10.addItem("")
        self.tab = QtWidgets.QLabel(frame)
        self.tab.setGeometry(QtCore.QRect(150, 30, 501, 61))
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(1)
        size_policy.setVerticalStretch(1)
        size_policy.setHeightForWidth(
            self.tab.sizePolicy().hasHeightForWidth())
        self.tab.setSizePolicy(size_policy)
        self.tab.setSizeIncrement(QtCore.QSize(0, 0))
        font = QtGui.QFont()
        font.setPointSize(10)
        font.setBold(True)
        font.setWeight(75)
        self.tab.setFont(font)
        self.tab.setAutoFillBackground(False)
        self.tab.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.tab.setAlignment(QtCore.Qt.AlignCenter)
        self.tab.setWordWrap(True)
        self.tab.setObjectName("tab")
        self.spin_box = QtWidgets.QSpinBox(frame)
        self.spin_box.setGeometry(QtCore.QRect(310, 170, 42, 22))
        self.spin_box.setMaximum(10)
        self.spin_box.setObjectName("spin_box")
        self.sbox2 = QtWidgets.QSpinBox(frame)
        self.sbox2.setGeometry(QtCore.QRect(310, 220, 42, 22))
        self.sbox2.setMaximum(10)
        self.sbox2.setObjectName("sbox2")
        self.sbox3 = QtWidgets.QSpinBox(frame)
        self.sbox3.setGeometry(QtCore.QRect(310, 270, 42, 22))
        self.sbox3.setMaximum(10)
        self.sbox3.setObjectName("sbox3")
        self.sbox4 = QtWidgets.QSpinBox(frame)
        self.sbox4.setGeometry(QtCore.QRect(310, 320, 42, 22))
        self.sbox4.setMaximum(10)
        self.sbox4.setObjectName("sbox4")
        self.sbox5 = QtWidgets.QSpinBox(frame)
        self.sbox5.setGeometry(QtCore.QRect(310, 370, 42, 22))
        self.sbox5.setMaximum(10)
        self.sbox5.setObjectName("sbox5")
        self.sbox6 = QtWidgets.QSpinBox(frame)
        self.sbox6.setGeometry(QtCore.QRect(680, 170, 42, 22))
        self.sbox6.setMaximum(10)
        self.sbox6.setObjectName("sbox6")
        self.sbox7 = QtWidgets.QSpinBox(frame)
        self.sbox7.setGeometry(QtCore.QRect(680, 220, 42, 22))
        self.sbox7.setMaximum(10)
        self.sbox7.setObjectName("sbox7")
        self.sbox8 = QtWidgets.QSpinBox(frame)
        self.sbox8.setGeometry(QtCore.QRect(680, 270, 42, 22))
        self.sbox8.setMaximum(10)
        self.sbox8.setObjectName("sbox8")
        self.sbox9 = QtWidgets.QSpinBox(frame)
        self.sbox9.setGeometry(QtCore.QRect(680, 320, 42, 22))
        self.sbox9.setMaximum(10)
        self.sbox9.setObjectName("sbox9")
        self.sbox10 = QtWidgets.QSpinBox(frame)
        self.sbox10.setGeometry(QtCore.QRect(680, 370, 42, 22))
        self.sbox10.setMaximum(10)
        self.sbox10.setObjectName("sbox10")
        self.button2 = QtWidgets.QPushButton(frame)
        self.button2.setGeometry(QtCore.QRect(340, 430, 93, 28))
        self.button2.setObjectName("button2")
        self.tab2 = QtWidgets.QLabel(frame)
        self.tab2.setGeometry(QtCore.QRect(160, 110, 55, 16))
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(
            self.tab2.sizePolicy().hasHeightForWidth())
        self.tab2.setSizePolicy(size_policy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.tab2.setFont(font)
        self.tab2.setObjectName("tab2")
        self.tab3 = QtWidgets.QLabel(frame)
        self.tab3.setGeometry(QtCore.QRect(550, 110, 55, 16))
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(
            self.tab3.sizePolicy().hasHeightForWidth())
        self.tab3.setSizePolicy(size_policy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.tab3.setFont(font)
        self.tab3.setObjectName("tab3")
        self.tab4 = QtWidgets.QLabel(frame)
        self.tab4.setGeometry(QtCore.QRect(310, 140, 55, 16))
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(
            self.tab4.sizePolicy().hasHeightForWidth())
        self.tab4.setSizePolicy(size_policy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.tab4.setFont(font)
        self.tab4.setObjectName("tab4")
        self.tab5 = QtWidgets.QLabel(frame)
        self.tab5.setGeometry(QtCore.QRect(60, 140, 55, 16))
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(
            self.tab5.sizePolicy().hasHeightForWidth())
        self.tab5.setSizePolicy(size_policy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.tab5.setFont(font)
        self.tab5.setObjectName("tab5")
        self.tab6 = QtWidgets.QLabel(frame)
        self.tab6.setGeometry(QtCore.QRect(430, 140, 55, 16))
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(
            self.tab6.sizePolicy().hasHeightForWidth())
        self.tab6.setSizePolicy(size_policy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.tab6.setFont(font)
        self.tab6.setObjectName("tab6")
        self.tab7 = QtWidgets.QLabel(frame)
        self.tab7.setGeometry(QtCore.QRect(680, 140, 55, 16))
        size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Expanding)
        size_policy.setHorizontalStretch(0)
        size_policy.setVerticalStretch(0)
        size_policy.setHeightForWidth(
            self.tab7.sizePolicy().hasHeightForWidth())
        self.tab7.setSizePolicy(size_policy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.tab7.setFont(font)
        self.tab7.setObjectName("tab7")

        self.retranslate_ui(frame)
        QtCore.QMetaObject.connectSlotsByName(frame)

        ui_functions.add_options(self.cbox1)
        ui_functions.add_options(self.cbox2)
        ui_functions.add_options(self.cbox3)
        ui_functions.add_options(self.cbox4)
        ui_functions.add_options(self.cbox5)
        ui_functions.add_options(self.cbox6)
        ui_functions.add_options(self.cbox7)
        ui_functions.add_options(self.cbox8)
        ui_functions.add_options(self.cbox9)
        ui_functions.add_options(self.cbox10)

        self.button2.clicked.connect(self.get_values)
Esempio n. 25
0
class MainWindow(QMainWindow):
    """
    主窗口
    """
    def __init__(self, parent=None):
        """
        构造函数
        :param parent:
        """
        super(MainWindow, self).__init__(parent)

        # socket初始化(基于UDP,无连接)
        self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        self.msg_send = ''
        self.msg_rec = ''
        self.room_info = ''
        self.addr = None
        self.chat_server = None

        # 数据库初始化
        self.conn = sqlite3.connect('./mySqlite.db')
        self.cur = self.conn.cursor()

        # 用户信息初始化
        self.users = []
        self.userID = "Null"
        self.userPWD = "Null"
        self.status = "离线"
        self.is_camera_available = False
        self.is_microphone_available = False
        self.is_screen_available = False
        self.frame_rate = -1
        self.resolvtion = ""
        self.roomID = -1
        self.isSetted = False

        # 界面初始化
        self.initUI()
        self.setFixedSize(self.width(), self.height())

        # 创建一个线程,调用自定义的BackendThread类,自旋监听服务端传来的消息,并实时更新窗口
        self.backend = BackendThread()
        self.backend.update_date.connect(self.handleDisplay)
        self.thread = QThread()  # 创建进程
        self.backend.moveToThread(self.thread)
        self.thread.started.connect(self.backend.run)
        self.thread.start()

    def reset_user_info(self):
        """
        重置用户信息
        :return:
        """
        self.userID = "Null"
        self.userPWD = "Null"
        self.status = "离线"
        self.is_camera_available = False
        self.is_microphone_available = False
        self.is_screen_available = False
        self.frame_rate = -1
        self.resolvtion = ""
        self.roomID = -1
        self.isSetted = False

    def paintEvent(self, event):
        """
        设置窗口背景
        :param event:
        :return:
        """
        painter = QPainter(self)
        pixmap = QPixmap("./bg.jpg")
        painter.drawPixmap(self.rect(), pixmap)

    def initUI(self):
        """
        初始化UI
        :return:
        """
        self.resize(1200, 1200)
        self.center()
        self.setWindowTitle('直播软件教师端')

        # 设置状态栏
        self.statusbar = self.statusBar()
        self.label1 = QLabel('状态:离线')
        self.label2 = QLabel('用户名:Null')

        self.statusbar.addPermanentWidget(self.label1, stretch=3)
        self.statusbar.addPermanentWidget(self.label2, stretch=1)

        #设置菜单栏
        self.RegisterAct = QAction('&注册', self)
        self.RegisterAct.triggered.connect(self.register)
        self.loginAct = QAction('&登录', self)
        self.loginAct.triggered.connect(self.login)
        self.logOutAct = QAction('&登出', self)
        self.logOutAct.triggered.connect(self.logout)
        self.exitAct = QAction('&退出软件', self)
        self.exitAct.triggered.connect(qApp.quit)

        self.menubar = self.menuBar()
        self.userMenu = self.menubar.addMenu('&用户')
        self.userMenu.addAction(self.RegisterAct)
        self.userMenu.addAction(self.loginAct)
        self.userMenu.addAction(self.logOutAct)
        self.userMenu.addAction(self.exitAct)

        self.setAct = QAction('&直播设置', self)
        self.setAct.triggered.connect(self.set)

        self.settingMenu = self.menubar.addMenu('&设置')
        self.settingMenu.addAction(self.setAct)

        self.userManageAct = QAction('&用户管理', self)
        self.userManageAct.triggered.connect(self.user_manage)

        self.manageMenu = self.menubar.addMenu('&管理')
        self.manageMenu.addAction(self.userManageAct)

        #设置标签
        self.label3 = QLabel(self)
        self.label3.setFont(QFont("Microsoft YaHei"))
        self.label3.setText("请先登录!")
        self.label3.resize(600, 50)
        self.label3.setAlignment(Qt.AlignCenter)
        self.label3.move(300, 50)

        self.label4 = QLabel(self)
        self.label4.setFont(QFont("Microsoft YaHei"))
        self.label4.setText("聊天室")
        self.label4.move(400, 780)

        self.label5 = QLabel(self)
        self.label5.setFont(QFont("Microsoft YaHei"))
        self.label5.setText("直播间")
        self.label5.move(900, 780)

        #设置VLC播放器
        self.frame = QFrame(self)
        self.frame.resize(1000, 600)
        self.frame.move(100, 100)
        self.frame.setStyleSheet("background-color: black;")
        self.player = Player()
        self.player.set_window(self.frame.winId())

        #设置主要按钮
        self.btn1 = QPushButton('开始直播', self)
        self.btn1.clicked.connect(self.live_start)
        self.btn1.resize(100, 50)
        self.btn1.move(250, 720)
        self.btn1.setEnabled(False)

        self.btn2 = QPushButton('结束直播', self)
        self.btn2.clicked.connect(self.live_finish)
        self.btn2.resize(100, 50)
        self.btn2.move(550, 720)
        self.btn2.setEnabled(False)

        self.btn3 = QPushButton('白板', self)
        self.btn3.clicked.connect(self.open_white_board)
        self.btn3.resize(100, 50)
        self.btn3.move(800, 720)
        self.btn3.setEnabled(False)

        self.btn4 = QPushButton('发送消息', self)
        self.btn4.resize(100, 50)
        self.btn4.move(700, 1080)
        self.btn4.clicked.connect(self.send_msg)
        self.btn4.setEnabled(False)

        self.btn5 = QPushButton('直播间管理', self)
        self.btn5.clicked.connect(self.manage_room)
        self.btn5.resize(200, 50)
        self.btn5.move(850, 1080)
        self.btn5.setEnabled(False)

        # 设置文本框
        self.messageText = QTextEdit(self)
        self.messageText.resize(700, 250)
        self.messageText.move(100, 820)
        self.messageText.setReadOnly(True)

        self.roomInfoText = QTextEdit(self)
        self.roomInfoText.resize(200, 250)
        self.roomInfoText.move(850, 820)
        self.roomInfoText.setReadOnly(True)

        self.inputEdit = QLineEdit(self)
        self.inputEdit.resize(580, 50)
        self.inputEdit.move(100, 1080)
        self.inputEdit.setPlaceholderText("请输入消息")

        self.show()

    def handleDisplay(self, data):
        """
        显示聊天室接收的消息
        :param data:
        :return:
        """
        self.messageText.setText(self.msg_rec)
        self.roomInfoText.setText(self.room_info)

    def user_manage(self):
        """
        管理用户
        :return:
        """
        if self.status == "离线":
            QMessageBox.warning(self, "消息", "请先登录!", QMessageBox.Yes)
        else:
            self.user_manage_window = UserManageWindow()
            self.user_manage_window.show()

    def open_white_board(self):
        """
        开启白板
        :return:
        """
        self.white_board = WhiteBoard()
        self.white_board.show()

    def live_start(self):
        """
        直播启动,rtmp推拉流,并在当前窗口显示
        :return:
        """
        if self.status == "登录":
            if self.isSetted:
                if self.socket_is_used(self.roomID):
                    QMessageBox.warning(self, "消息", "房间号已被占用,请重新进行设置!",
                                        QMessageBox.Yes)
                    self.set()
                else:
                    screen_size = "2560x1600"
                    framerate = str(self.frame_rate)
                    camera = "Integrated Camera"
                    microphone = "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{BA4FE0F6-9988-467D-92A4-317C7775E78E}"
                    rtmp_server = "127.0.0.1:1935/myapp/" + str(self.roomID)
                    # 拼接命令
                    cmd = 'ffmpeg -thread_queue_size 128 -f dshow -i audio="{:s}" -f gdigrab -video_size {:s} -framerate {:s} -i desktop -f dshow -i video="{:s}" -framerate {:s}  -filter_complex "[2]scale=iw/2:ih/2[pip];[1][pip]overlay=main_w-overlay_w-10:main_h-overlay_h-10" -g 25 -vcodec libx264  -preset:v ultrafast -pix_fmt yuv420p -tune:v zerolatency -acodec aac -ab 128k -map 0:0 -f flv rtmp:{:s}'.format(
                        microphone, screen_size, framerate, camera, framerate,
                        rtmp_server)

                    # 录频+录像+录音(默认)
                    if self.is_camera_available and self.is_screen_available:
                        pass
                    # 录像+录音
                    elif self.is_camera_available:
                        cmd = 'ffmpeg -thread_queue_size 128 -f dshow -i video="{:s}" -framerate {:s} -f dshow -i audio="{:s}" -pix_fmt yuv420p -f flv rtmp:{:s}'.format(
                            camera, framerate, microphone, rtmp_server)
                    # 录屏+录音
                    elif self.is_screen_available:
                        cmd = 'ffmpeg -thread_queue_size 128 -f gdigrab -video_size {:s} -i desktop -framerate {:s} -f dshow -i audio="{:s}" -pix_fmt yuv420p -f flv rtmp:{:s}'.format(
                            screen_size, framerate, microphone, rtmp_server)

                    # rtmp推流
                    self.live_video = subprocess.Popen(cmd,
                                                       shell=True,
                                                       stdin=subprocess.PIPE,
                                                       stdout=subprocess.PIPE)
                    # 调用VLC播放器,显示直播结果
                    self.player.play(
                        'http://127.0.0.1:8086/live?port=1935&app=myapp&stream='
                        + str(self.roomID))

                    self.btn1.setEnabled(False)
                    self.btn2.setEnabled(True)
                    self.status = "直播中"
                    self.resetInfo()
                    self.start_chat_server()

                    self.btn4.setEnabled(True)
                    self.btn5.setEnabled(True)

                    s = 'INSERT INTO Lives VALUES ({:d},"{:s}");'.format(
                        int(self.roomID), self.userID)
                    self.cur.execute(
                        'INSERT INTO Lives VALUES ({:d},"{:s}");'.format(
                            int(self.roomID), self.userID))

                    self.conn.commit()

            else:
                QMessageBox.warning(self, "消息", "请先进行设置!", QMessageBox.Yes)
                self.set()

        elif self.status == "直播中":
            QMessageBox.warning(self, "消息", "直播已开启!", QMessageBox.Yes)

        elif self.status == "离线":
            QMessageBox.warning(self, "消息", "请先登录!", QMessageBox.Yes)

    def live_finish(self):
        """
        结束直播
        :return:
        """
        self.live_video.stdin.write('q'.encode("GBK"))
        self.live_video.communicate()
        self.player.stop()
        self.live_video = None
        self.status = "登录"
        self.users = []
        self.btn1.setEnabled(True)
        self.btn2.setEnabled(False)
        self.btn4.setEnabled(False)
        self.btn5.setEnabled(False)
        self.resetInfo()
        self.terminate_chat_server()
        self.cur.execute('delete from Lives where RoomID={:d};'.format(
            int(self.roomID)))
        self.conn.commit()
        QMessageBox.information(self, "消息", "直播已结束!", QMessageBox.Yes)

    def resetInfo(self):
        """
        重置窗口信息
        :return:
        """
        s1 = '状态:{:s}'.format(self.status)
        s2 = '用户名:{:s}'.format(self.userID)
        self.label2.setText(s2)

        s3 = ""
        if self.status == "离线":
            s3 = '请先登录!'
        elif self.status == "登录":
            s3 = '欢迎您:{:s}老师,直播功能已就绪!'.format(self.userID)
        elif self.status == "直播中":
            s1 = "直播信息:录像:{:s},录频:{:s},录音:{:s},分辨率:{:s},帧率:{:s}".format(
                "开" if self.is_camera_available else "关",
                "开" if self.is_screen_available else "关",
                "开" if self.is_microphone_available else "关", self.resolvtion,
                str(self.frame_rate))
            s3 = '{:s}老师正在直播!房间号:{:s}'.format(self.userID, str(self.roomID))
        self.label3.setText(s3)

        self.label1.setText(s1)

        self.msg_rec = ""
        self.msg_send = ""
        self.room_info = ""

    def center(self):
        """
        移动窗口到屏幕中心
        :return:
        """
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def register(self):
        """
        用户注册
        :return:
        """
        self.register_window = RegisterWindow(self)
        self.register_window.show()

    def login(self):
        """
        用户登录
        :return:
        """
        if self.status == "离线":
            self.login_window = LoginWindow(self)
            self.login_window.show()
        else:
            QMessageBox.warning(self, "消息", "您已登录!", QMessageBox.Yes)

    def logout(self):
        """
        用户登出
        :return:
        """
        if self.status == "离线":
            QMessageBox.warning(self, "消息", "请先登录!", QMessageBox.Yes)
        elif self.status == "直播中":
            QMessageBox.warning(self, "消息", "请先关闭直播!", QMessageBox.Yes)
        else:
            self.reset_user_info()
            QMessageBox.information(self, "消息", "成功登出!", QMessageBox.Yes)
            self.resetInfo()

        self.btn1.setEnabled(False)
        self.btn2.setEnabled(False)
        self.btn3.setEnabled(False)
        self.btn4.setEnabled(False)
        self.btn5.setEnabled(False)

    def set(self):
        """
        直播设置
        :return:
        """
        if self.status == "离线":
            QMessageBox.warning(self, "消息", "请先登录!", QMessageBox.Yes)
        elif self.status == "直播中":
            QMessageBox.warning(self, "消息", "请先关闭直播!", QMessageBox.Yes)
        else:
            self.setting_window = SettingWindow(self)
            self.setting_window.show()

    def closeDB(self):
        """
        关闭数据库连接
        :return:
        """
        if self.cur is not None:
            self.cur.close()
        if self.conn is not None:
            self.conn.close()

    def start_chat_server(self):
        """
        开启一个聊天室服务器
        :return:
        """
        # 创建一个新进程开启聊天服务器
        self.chat_server = multiprocessing.Process(target=ChatServer,
                                                   args=(int(self.roomID), ))
        self.chat_server.start()

        # 由于这里是异步的,需要进行同步控制,但我懒得用信号量了,直接让主进程暂停1s
        time.sleep(1)
        self.connect_server()

    def terminate_chat_server(self):
        """
        终止聊天室服务器
        :return:
        """
        msg = "老师关闭了直播间"
        message = msg.encode("utf-8")
        self.s.sendto(message, self.addr)
        if self.chat_server.is_alive():
            self.chat_server.terminate()

    def rec_msg(self):
        """
        自旋,接收服务端发送的消息
        :return:
        """
        while 1:
            msg = self.s.recvfrom(1024)[0].decode('utf-8')
            self.msg_rec += msg + '\n'
            if "进入聊天室..." in msg:
                tmp = msg.rstrip("进入聊天室...")
                self.room_info += tmp[:-2] + "(" + tmp[-2:] + ")\n"
                self.users.append(tmp)
            elif msg == "老师关闭了直播间":
                break

    def send_msg(self):
        """
        发送消息
        :return:
        """
        msg = self.userID + "老师:" + self.inputEdit.text()
        message = msg.encode("utf-8")
        self.s.sendto(message, self.addr)
        self.inputEdit.clear()

    def connect_server(self):
        """
        连接聊天服务器
        :return:
        """
        add1 = "127.0.0.1"
        add2 = int(self.roomID)
        self.addr = (add1, add2)
        s = self.userID + "老师"
        self.s.sendto(s.encode('utf-8'), self.addr)
        self.msg_rec += "您已连接到本直播间聊天室:{:s}:{:d}\n".format(add1, add2)
        t = threading.Thread(target=self.rec_msg)
        t.start()

    def socket_is_used(self, port, ip='127.0.0.1'):
        """
        判断套接字是否可用,不可用说明房间号已经存在
        :param port:
        :param ip:
        :return:
        """
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            s.connect((ip, port))
            s.shutdown(2)
            return True
        except:
            return False

    def manage_room(self):
        """
        管理直播间
        :return:
        """
        self.manage_room_window = RoomManageWindow(user_info=self.users,
                                                   main_window=self)
        self.manage_room_window.show()

    def closeEvent(self, event):
        """
        清理一些 自己需要关闭的东西
        :param event:
        :return:
        """
        self.cur.execute("delete from lives")
        self.conn.commit()
        self.conn.close()
        self.s.close()
        if self.live_video:
            self.live_video.stdin.write('q'.encode("GBK"))
            self.live_video.communicate()
        event.accept()  # 界面的关闭   但是会有一些时候退出不完全    需要调用 os 的_exit 完全退出
        try:
            os._exit(5)
        except Exception as e:
            print(e)
Esempio n. 26
0
class Atlas(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        #On startup, check whether variable databases exist. If not, build databases.

        #Check Variable Database
        if os.path.exists("./Variables/Variables.sqlite3") == False:
            #Create Variables Database
            conn = sqlite3.connect("./Variables/Variables.sqlite3")
            c = conn.cursor()

            #Create Antibiotics Table
            c.execute(
                "CREATE TABLE Antibiotics(id INTEGER PRIMARY KEY, name TEXT)")
            ant = "Carbenicillin"
            c.execute("INSERT INTO Antibiotics(name) VALUES (?)", (ant, ))
            ant = "Kanamycin"
            c.execute("INSERT INTO Antibiotics(name) VALUES (?)", (ant, ))
            ant = "Chloramphenicol"
            c.execute("INSERT INTO Antibiotics(name) VALUES (?)", (ant, ))

            # Create Plasmids Table
            c.execute(
                "CREATE TABLE Plasmids(id INTEGER PRIMARY KEY, name TEXT)")

            # Create Primers Table
            c.execute(
                "CREATE TABLE Primers(id INTEGER PRIMARY KEY, name TEXT)")

            conn.commit()
            conn.close()

        #Insert Menu Bar
        self.openFile = QAction('&Open', self)
        self.openFile.setShortcut('Ctrl+O')
        self.openFile.setStatusTip('Open new File')
        self.openFile.triggered.connect(self.showDialog)

        menubar = self.menuBar()
        self.fileMenu = menubar.addMenu('&File')
        self.fileMenu.addAction(self.openFile)

        #Center Window
        self.resize(1200, 600)
        qtRectangle = self.frameGeometry()
        centerPoint = QDesktopWidget().availableGeometry().center()
        qtRectangle.moveCenter(centerPoint)
        self.move(qtRectangle.topLeft())
        self.setWindowTitle('ATLAS')

        #Insert Status Bar
        self.statusBar().showMessage('Ready')
        self.show()

        #Experiment Selection Frame
        self.ExpFrame = QFrame(self)
        self.ExpFrame.move(5, 25)
        self.ExpFrame.resize(450, 200)
        self.ExpFrame.setFrameShape(QFrame.StyledPanel)
        self.ExpFrame.show()

        #Experiment Frame Label
        self.ExpLabel = QLabel(self.ExpFrame)
        self.ExpLabel.setText("Experiment Tables")
        self.ExpLabel.move(5, 1)
        newfont = QFont("Times", 8, QFont.Bold)
        self.ExpLabel.setFont(newfont)
        self.ExpLabel.show()

        #Experiment Table Generation Button
        self.ExpButton = QPushButton(self.ExpFrame)
        self.ExpButton.resize(120, 30)
        self.ExpButton.move(320, 20)
        self.ExpButton.setText("Generate")
        self.ExpButton.clicked.connect(self.GenExpList)
        self.ExpButton.show()

        #Experiment Check Buttons
        self.ExpCheck1 = QCheckBox(self.ExpFrame)
        self.ExpCheck1.move(15, 30)
        self.ExpCheck1.setText("Include Complete Experiments")
        self.ExpCheck1.show()

        #Experiment Table
        self.ExpTable = QTableView(self.ExpFrame)
        self.ExpTable.move(10, 60)
        self.ExpTable.resize(430, 130)
        self.ExpTableModel = QStandardItemModel(self)
        self.ExpTable.setModel(self.ExpTableModel)
        self.ExpTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
        row = []
        cell = QStandardItem("#")
        row.append(cell)
        cell = QStandardItem("Name")
        row.append(cell)
        self.ExpTable.horizontalHeader().hide()
        self.ExpTable.verticalHeader().hide()
        self.ExpTableModel.appendRow(row)
        self.ExpTable.horizontalHeader().setStretchLastSection(True)
        self.ExpTable.setColumnWidth(0, 12)
        self.ExpTable.resizeRowsToContents()
        self.ExpTable.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.ExpTable.show()

        #Modification Frame
        self.ModFrame = QFrame(self)
        self.ModFrame.move(5, 230)
        self.ModFrame.resize(450, 350)
        self.ModFrame.setFrameShape(QFrame.StyledPanel)
        self.ModFrame.show()

        #Modification Label
        self.ModLabel = QLabel(self.ModFrame)
        self.ModLabel.setText("Section Viewer")
        self.ModLabel.move(5, 1)
        newfont = QFont("Times", 8, QFont.Bold)
        self.ModLabel.setFont(newfont)
        self.ModLabel.show()

        #Modification Table
        self.ModTable = QTableView(self.ModFrame)
        self.ModTable.move(10, 20)
        self.ModTable.resize(430, 320)
        self.ModTableModel = QStandardItemModel(self)
        self.ModTable.setModel(self.ModTableModel)
        self.ModTable.setEditTriggers(QAbstractItemView.NoEditTriggers)
        row = []
        cell = QStandardItem("Date")
        row.append(cell)
        cell = QStandardItem("Name")
        row.append(cell)
        self.ModTable.horizontalHeader().hide()
        self.ModTable.verticalHeader().hide()
        self.ModTableModel.appendRow(row)
        self.ModTable.horizontalHeader().setStretchLastSection(True)
        self.ModTable.setColumnWidth(0, 80)
        self.ModTable.resizeRowsToContents()
        self.ModTable.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.ModTable.clicked.connect(self.openExp)
        self.ModTable.show()

        #Detailed Tabs
        self.DetTabs = QTabWidget(self)
        self.DetTab1 = QWidget(self)
        self.DetTab1.setAutoFillBackground(True)
        self.DetTab2 = QWidget(self)
        self.DetTab2.setAutoFillBackground(True)
        self.DetTab3 = QWidget(self)
        self.DetTab3.setAutoFillBackground(True)
        self.DetTabs.move(460, 25)
        self.DetTabs.resize(735, 556)
        self.DetTabs.addTab(self.DetTab1, "DetTab1")
        self.DetTabs.addTab(self.DetTab2, "DetTab2")
        self.DetTabs.addTab(self.DetTab3, "New Protocol")
        self.DetTabs.show()

        self.DetTabs.currentChanged.connect(self.TabChange)

        #New Protocol Tab Setup
        self.DTNew_Cat_Title = QLabel(self.DetTab3)
        self.DTNew_Cat_Title.setText("Protocol Location")
        self.DTNew_Cat_Title.move(5, 2)
        newfont = QFont("Times", 8, QFont.Bold)
        self.DTNew_Cat_Title.setFont(newfont)
        self.DTNew_Cat_Title.show()

        self.DTNew_CatText_Title = QLineEdit(self.DetTab3)
        self.DTNew_CatText_Title.setText("./Protocols/General/")
        self.DTNew_CatText_Title.move(3, 22)
        self.DTNew_CatText_Title.resize(723, 17)
        self.DTNew_CatText_Title.show()

        self.CatButton = QPushButton(self.DetTab3)
        self.CatButton.resize(120, 22)
        self.CatButton.move(2, 40)
        self.CatButton.setText("Change Location...")
        self.CatButton.clicked.connect(self.showDialogDir)

        self.CatButton.show()

        self.DTNew_Lab_Title = QLabel(self.DetTab3)
        self.DTNew_Lab_Title.setText("Title")
        self.DTNew_Lab_Title.move(5, 65)
        newfont = QFont("Times", 8, QFont.Bold)
        self.DTNew_Lab_Title.setFont(newfont)
        self.DTNew_Lab_Title.show()

        self.DTNew_Text_Title = QLineEdit(self.DetTab3)
        self.DTNew_Text_Title.setText("Protocol Title")
        self.DTNew_Text_Title.move(3, 83)
        self.DTNew_Text_Title.resize(723, 17)
        self.DTNew_Text_Title.show()

        self.DTNew_Lab_Title = QLabel(self.DetTab3)
        self.DTNew_Lab_Title.setText("Select Section")
        self.DTNew_Lab_Title.move(5, 105)
        newfont = QFont("Times", 8, QFont.Bold)
        self.DTNew_Lab_Title.setFont(newfont)
        self.DTNew_Lab_Title.show()

        self.DTNew_Text_Title = QComboBox(self.DetTab3)
        self.DTNew_Text_Title.move(3, 123)
        self.DTNew_Text_Title.resize(723, 17)
        self.DTNew_Text_Title.show()

        self.DTNew_Sec_Name = QLabel(self.DetTab3)
        self.DTNew_Sec_Name.setText("Section Name")
        self.DTNew_Sec_Name.move(5, 147)
        newfont = QFont("Times", 8, QFont.Bold)
        self.DTNew_Sec_Name.setFont(newfont)
        self.DTNew_Sec_Name.show()

        self.DTNew_Sec_Text = QLineEdit(self.DetTab3)
        self.DTNew_Sec_Text.setText("Section Name")
        self.DTNew_Sec_Text.move(3, 168)
        self.DTNew_Sec_Text.resize(723, 17)
        self.DTNew_Sec_Text.show()

        # self.DTNew_Lab_Date = QLabel(self.DetTab3)
        # self.DTNew_Lab_Date.setText("Date")
        # self.DTNew_Lab_Date.move(5, 107)
        # newfont = QFont("Times", 8, QFont.Bold)
        # self.DTNew_Lab_Date.setFont(newfont)
        # self.DTNew_Lab_Date.show()
        #
        # self.DTNew_But_Date = QDateEdit(self.DetTab3)
        # self.DTNew_But_Date.move(3,128)
        # self.DTNew_But_Date.resize(80,19)
        # self.DTNew_But_Date.setCalendarPopup(True)
        # self.DTNew_But_Date.show()

        self.DTNew_Lab_Section = QLabel(self.DetTab3)
        self.DTNew_Lab_Section.setText("Section Text")
        self.DTNew_Lab_Section.move(5, 194)
        newfont = QFont("Times", 8, QFont.Bold)
        self.DTNew_Lab_Section.setFont(newfont)
        self.DTNew_Lab_Section.show()

        self.DTNew_Text_Section = QPlainTextEdit(self.DetTab3)
        self.DTNew_Text_Section.appendPlainText("Section Text")
        self.DTNew_Text_Section.move(3, 216)
        self.DTNew_Text_Section.resize(723, 200)
        self.DTNew_Text_Section.show()

        self.DTNew_Var_Lab = QLabel(self.DetTab3)
        self.DTNew_Var_Lab.setText("Insert Variable")
        self.DTNew_Var_Lab.move(5, 426)
        newfont = QFont("Times", 8, QFont.Bold)
        self.DTNew_Var_Lab.setFont(newfont)
        self.DTNew_Var_Lab.show()

        self.DTNew_Var_Comb = QComboBox(self.DetTab3)
        self.DTNew_Var_Comb.move(3, 446)
        self.DTNew_Var_Comb.resize(100, 30)
        self.DTNew_Var_Comb.currentTextChanged.connect(self.VarChange)
        self.DTNew_Var_Comb.show()

        self.DTNew_Var_Lab2 = QLabel(self.DetTab3)
        self.DTNew_Var_Lab2.setText("Default Value")
        self.DTNew_Var_Lab2.move(130, 426)
        newfont = QFont("Times", 8, QFont.Bold)
        self.DTNew_Var_Lab2.setFont(newfont)
        self.DTNew_Var_Lab2.show()

        self.DTNew_Var_Comb2 = QComboBox(self.DetTab3)
        self.DTNew_Var_Comb2.move(130, 446)
        self.DTNew_Var_Comb2.resize(100, 30)
        self.DTNew_Var_Comb2.show()

        self.DTNew_VarIns_But = QPushButton(self.DetTab3)
        self.DTNew_VarIns_But.setText("Insert")
        self.DTNew_VarIns_But.move(257, 446)
        self.DTNew_VarIns_But.resize(100, 30)
        self.DTNew_VarIns_But.clicked.connect(self.InsVar)
        self.DTNew_VarIns_But.show()

        self.DTNew_AddSec_Button = QPushButton(self.DetTab3)
        self.DTNew_AddSec_Button.move(3, 486)
        self.DTNew_AddSec_Button.resize(300, 30)
        self.DTNew_AddSec_Button.setText("Add Section")
        self.DTNew_AddSec_Button.show()

    #Read Variable List when New Protocol tab is opened
    def TabChange(self, i):
        if i == 2:
            print("yes")
            conn = sqlite3.connect("./Variables/Variables.sqlite3")
            tables = conn.execute(
                "SELECT name FROM sqlite_master WHERE type='table';")
            templist = []
            for name in tables:
                templist.append(name[0])
            self.DTNew_Var_Comb.addItems(templist)

            conn.close()

    #Open file when experiment is clicked in list - temporary function
    def openExp(self, clickedIndex):
        Exp = clickedIndex.sibling(clickedIndex.row(), 0).data()
        print(Exp)
        os.startfile(Experiments[Exp])

    #Test function for opening file dialog box - temporary function
    def showDialog(self):
        fname = QFileDialog.getOpenFileName(self, 'Open file', '.')
        print(fname[0])

    #Open dialog box and select a folder
    def showDialogDir(self):
        dname = str(QFileDialog.getExistingDirectory(self, 'Select Directory'))
        self.DTNew_CatText_Title.setText(dname)

    #Search Experiments folder and build list of Experiments present on computer
    def GenExpList(self):
        self.ExpTableModel.setRowCount(0)
        for root, dirs, files in os.walk(".\Experiments"):
            for file in files:
                if file.startswith("Experiment"):
                    if "." in file.split()[1]:
                        doc = docx.Document(root + "\\" + file)
                        if doc.core_properties.subject != "Complete" or self.ExpCheck1.isChecked(
                        ):
                            row = []
                            row.append(
                                QStandardItem(file.split()[1]
                                              [:file.split()[1].index(".")]))
                            row.append(QStandardItem(
                                doc.core_properties.title))
                            self.ExpTableModel.appendRow(row)
                            self.ExpTable.resizeRowsToContents()
                            Experiments[file.split()[1][:file.split(
                            )[1].index(".")]] = root + "\\" + file

                    else:
                        doc = docx.Document(root + "\\" + file)
                        if doc.core_properties.subject != "Complete" or self.ExpCheck1.isChecked(
                        ):
                            row = []
                            row.append(QStandardItem(file.split()[1]))
                            row.append(QStandardItem(
                                doc.core_properties.title))
                            self.ExpTableModel.appendRow(row)
                            self.ExpTable.resizeRowsToContents()
                            Experiments[file.split()[1]] = root + "\\" + file
        doc = docx.Document(os.path.realpath(".\demo 1.docx"))
        print(doc.paragraphs[1].text)
        print(Experiments)

    #Open calendar function
    def OpenCal(self):
        print("hello")
        self.DTNew_Cal.show()

    def AddSection(self):
        print("hello")

    #When the Variable Category ComboBox is changed, update the second combobox
    def VarChange(self, s):
        self.DTNew_Var_Comb2.clear()
        print(s)
        var = s
        conn = sqlite3.connect("./Variables/Variables.sqlite3")
        rows = conn.execute("SELECT name FROM {0};".format(var))
        templist = []
        for name in rows:
            templist.append(name[0])
        self.DTNew_Var_Comb2.addItems(templist)
        conn.close()

    def InsVar(self):
        print(self.DTNew_Var_Comb.currentText(),
              self.DTNew_Var_Comb2.currentText())
Esempio n. 27
0
    def create_box(self,
                   containers: QFrame,
                   count_box: int,
                   title: str = "",
                   box_type: bool = True,
                   start_location: int = 30,
                   count_star_type1: int = 3,
                   count_star_type2: int = 2):
        """this method for create details

        Arguments:
            containers {QFrame} -- [parent layout]
            count_box {int} -- [count for create]

        Keyword Arguments:
            title {str} -- [title in box] (default: {""})
            box_type {box type color type star box ...} -- [description] (default: {True})
            start_location {int} -- [ create box in location] (default: {30})

        Returns:
            [int] -- [location for use create other box]
        """
        from ..star_box.starbox import StarBox
        for box_enumerate in range(count_box):

            card_details = QFrame(containers)
            if box_enumerate != 0:
                card_details.move(
                    int(start_location) * box_enumerate + 138 + 20, 20)
                card_details.resize(138, 138)
            else:
                card_details.move(int(start_location), 20)
                card_details.resize(138, 138)

            card_details.setCursor(QCursor(Qt.PointingHandCursor))

            if box_type:
                StarBox().create_star(card_containers=card_details,
                                      count_star_type1=count_star_type1,
                                      count_star_type2=count_star_type2)
                card_details.setObjectName(
                    BoxStyles.card_details_style_type_1[0])
                card_details.setStyleSheet(
                    BoxStyles.card_details_style_type_1[1])
            else:
                StarBox().create_star(card_containers=card_details,
                                      count_star_type1=count_star_type1,
                                      count_star_type2=count_star_type2,
                                      star_type=False)
                card_details.setObjectName(
                    BoxStyles.card_details_style_type_2[0])
                card_details.setStyleSheet(
                    BoxStyles.card_details_style_type_2[1])

            lbl_title = QLabel(card_details)
            lbl_title.setGeometry(QRect(0, 10, 138, 20))
            lbl_title.setObjectName(BoxStyles.lbl_title_styles[0])
            lbl_title.setStyleSheet(BoxStyles.lbl_title_styles[1])
            lbl_title.setAlignment(Qt.AlignCenter)
            lbl_title.setText(title)
            card_details.setFrameShape(QFrame.StyledPanel)
            card_details.setFrameShadow(QFrame.Raised)

        return (int(start_location * (box_enumerate + 1)) + 138) + 20
Esempio n. 28
0
class MainUI(QMainWindow):
    def __init__(self):
        super().__init__()

    def initUI(self):
        rec = QApplication.desktop()
        rec = rec.screenGeometry()
        self.screenWidth, self.screenHeight = rec.width(), rec.height()
        
        top_field_width = 0.173 * self.screenWidth
        top_field_height = 0.037 * self.screenHeight
        
        if sys.platform == 'linux':
            font = QFont("Liberation Serif")
        elif sys.platform == 'darwin':
            font = QFont("Times")
        else:
            font = QFont("Calibri")
        
        
        self.framepal = QPalette()
        self.framepal.setColor(self.backgroundRole(), QColor(240, 240, 240)) 
 
        self.topframe = QFrame(self)
        self.topframe.setFrameShape(QFrame.StyledPanel)
        self.topframe.setPalette(self.framepal)
        self.topframe.setAutoFillBackground(True)
        self.topframe.resize(0.307 * self.screenWidth, 0.22 * self.screenHeight)
        self.topframe.move(0.01 * self.screenWidth, 0.037 * self.screenHeight)
        
        self.lbl1 = QLabel('Enter poject name : ', self.topframe)
        font.setPixelSize(28 / 1920 * self.screenWidth)
        self.lbl1.setFont(font)
        self.lbl1.move(10 / 1920 * self.screenWidth, 15 / 1080 * self.screenHeight)
        
        self.le = QLineEdit(self.topframe)
        self.le.resize(top_field_width, top_field_height)
        self.le.move(243 / 1920 * self.screenWidth, 16 / 1080 * self.screenHeight)
        font.setPixelSize(26 / 1920 * self.screenWidth)
        self.le.setFont(font)
        
        self.srclbl = QLabel('Source code file : ', self.topframe)
        font.setPixelSize(28 / 1920 * self.screenWidth)
        self.srclbl.setFont(font)
        self.srclbl.move(10 / 1920 * self.screenWidth, 75 / 1080 * self.screenHeight)
        
        self.lt = QListWidget(self.topframe)
        self.lt.resize(top_field_width, top_field_height)
        self.lt.move(243 / 1920 * self.screenWidth, 74 / 1080 * self.screenHeight)
        font.setPixelSize(24 / 1920 * self.screenWidth)
        self.lt.setFont(font)
        self.lt.setIconSize(QSize(25 / 1080 * self.screenHeight, 25 / 1080 * self.screenHeight))
        self.lt.setContextMenuPolicy(Qt.CustomContextMenu)
        
        self.lbln = QLabel('Build target folder : ', self.topframe)
        font.setPixelSize(28 / 1920 * self.screenWidth)
        self.lbln.setFont(font)
        self.lbln.move(10 / 1920 * self.screenWidth, 133 / 1080 * self.screenHeight)
        
        self.folle = QLineEdit(self.topframe)
        self.folle.resize(top_field_width, top_field_height)
        self.folle.move(243 / 1920 * self.screenWidth, 134 / 1080 * self.screenHeight)
        font.setPixelSize(25 / 1920 * self.screenWidth)
        self.folle.setFont(font)
        self.folle.setReadOnly(True)
        
        self.choosebtn = QPushButton('Choose file', self.topframe)
        self.choosebtn.move(10 / 1920 * self.screenWidth, 185 / 1080 * self.screenHeight)
        self.choosebtn.resize(0.07 * self.screenWidth, 0.036 * self.screenHeight)
        font.setPixelSize(22 / 1920 * self.screenWidth)
        self.choosebtn.setFont(font)
        
        self.choosefoldbtn = QPushButton('Choose folder', self.topframe)
        self.choosefoldbtn.move(155 / 1920 * self.screenWidth, 185 / 1080 * self.screenHeight)
        self.choosefoldbtn.resize(0.07 * self.screenWidth, 0.036 * self.screenHeight)
        font.setPixelSize(22 / 1920 * self.screenWidth)
        self.choosefoldbtn.setFont(font)
        self.choosefoldbtn.setToolTip("Where folder with compiled project will be placed")
        
        #self.warnlbl = QLabel('                                                                    ', self.topframe)
        #self.warnlbl.setFont(QFont('Calibri', 14))
        #self.warnlbl.move(294 / 1920 * self.screenWidth, 190 / 1080 * self.screenHeight)
        #self.warnlbl.setStyleSheet("QLabel { color : red; }")
        
        self.leftframe = QFrame(self)
        self.leftframe.setFrameShape(QFrame.StyledPanel)
        self.leftframe.setPalette(self.framepal)
        self.leftframe.setAutoFillBackground(True)
        self.leftframe.resize(0.106 * self.screenWidth, 0.351 * self.screenHeight)
        self.leftframe.move(20 / 1920 * self.screenWidth, 290 / 1080 * self.screenHeight)
        
        self.lbl2 = QLabel('Build tool : ', self.leftframe)
        font.setPixelSize(27 / 1920 * self.screenWidth)
        self.lbl2.setFont(font)
        self.lbl2.move(10 / 1920 * self.screenWidth, 15 / 1080 * self.screenHeight)
        
        self.toolle = QLineEdit(self.leftframe)
        self.toolle.resize(182 / 1920 * self.screenWidth, 37 / 1080 * self.screenHeight)
        self.toolle.move(10 / 1920 * self.screenWidth, 60 / 1080 * self.screenHeight)
        font.setPixelSize(26 / 1920 * self.screenWidth)
        self.toolle.setFont(font)
        self.toolle.setReadOnly(True)
        
        self.settingsbtn = QPushButton('Settings', self.leftframe)
        self.settingsbtn.move(30 / 1920 * self.screenWidth, 115 / 1080 * self.screenHeight)
        self.settingsbtn.resize(140 / 1920 * self.screenWidth, 45 / 1080 * self.screenHeight)
        font.setPixelSize(23 / 1920 * self.screenWidth)
        self.settingsbtn.setFont(font)
        
        self.buildbtn = QPushButton('Build', self.leftframe)
        self.buildbtn.move(17 / 1920 * self.screenWidth, 311 / 1080 * self.screenHeight)
        self.buildbtn.resize(170 / 1920 * self.screenWidth, 50 / 1080 * self.screenHeight)
        font.setPixelSize(25 / 1920 * self.screenWidth)
        self.buildbtn.setFont(font)
        
        self.rightframe = QFrame(self)
        self.rightframe.setFrameShape(QFrame.StyledPanel)
        self.rightframe.setPalette(self.framepal)
        self.rightframe.setAutoFillBackground(True)
        self.rightframe.resize(0.192 * self.screenWidth, 0.351 * self.screenHeight)
        self.rightframe.move(240 / 1920 * self.screenWidth, 290 / 1080 * self.screenHeight)
        
        self.list = QListWidget(self.rightframe)
        self.list.resize(350 / 1920 * self.screenWidth, 250 / 1080 * self.screenHeight)
        self.list.move(9 / 1920 * self.screenWidth, 46 / 1080 * self.screenHeight)
        self.list.setIconSize(QSize(27 / 1080 * self.screenHeight, 27 / 1080 * self.screenHeight))
        font.setPixelSize(23 / 1920 * self.screenWidth)
        self.list.setFont(font)
        self.list.setSelectionMode(QAbstractItemView.SingleSelection)
        #self.list.setDragDropMode(QAbstractItemView.NoDragDrop)
        self.list.setContextMenuPolicy(Qt.CustomContextMenu)
        self.list.setToolTip("Add resources and your modules/packages that program uses here")
        
        self.lbl4 = QLabel('Include files : ', self.rightframe)
        self.lbl4.move(10 / 1920 * self.screenWidth, 5 / 1080 * self.screenHeight)
        font.setPixelSize(26 / 1920 * self.screenWidth)
        self.lbl4.setFont(font)
        #self.lbl4.setToolTip("Add resources and YOUR modules/packages that program uses here")
        
        self.addbtn = QPushButton('Add', self.rightframe)
        self.addbtn.move(8 / 1920 * self.screenWidth, 315 / 1080 * self.screenHeight)
        self.addbtn.resize(130 / 1920 * self.screenWidth, 44 / 1080 * self.screenHeight)
        font.setPixelSize(23 / 1920 * self.screenWidth)
        self.addbtn.setFont(font)
        
        self.delbtn = QPushButton('Remove', self.rightframe)
        self.delbtn.move(230 / 1920 * self.screenWidth, 315 / 1080 * self.screenHeight)
        self.delbtn.resize(130  / 1920 * self.screenWidth, 44 / 1080 * self.screenHeight)
        font.setPixelSize(23 / 1920 * self.screenWidth)
        self.delbtn.setFont(font)
Esempio n. 29
0
class Chat(QWidget):
    msg_signal = pyqtSignal(dict)
    after_close = None
    chats = []
    cur_chat = None

    def __init__(self, parent=None):
        super().__init__(parent)

        self.msg_signal.connect(self.fill_msg)
        MsgWorker().do_recv_msg = self.do_recv_msg
        self.setWindowTitle('')
        self.op_bar = QFrame(self)
        self.op_bar.setStyleSheet('background-color:rgb(255, 255, 255);')
        self.send_bar = QFrame(self)
        self.send_bar.setStyleSheet('background-color:rgb(255, 255, 255);')
        self.rcTxt = QTextBrowser(self)
        self.rcTxt.setStyleSheet('background-color:rgb(255, 255, 255);')
        self.sdTxt = QTextEdit(self)
        self.sdTxt.setStyleSheet('background-color:rgb(255, 255, 255);')
        self.btn = QPushButton("发送", self.send_bar)
        self.btn.clicked.connect(self.send)
        self.lv = QListView(self)
        self.lv.setViewMode(QListView.ListMode)
        self.lv.setIconSize(QSize(30, 30))
        self.lv.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.lv.setResizeMode(QListView.Adjust)
        self.lv_model = QStandardItemModel()
        self.lv.setModel(self.lv_model)
        self.lv.clicked.connect(self.lv_clicked)
        self.lv.move(0, 0)

        w, h = 600, 400
        self.resize(800, 600)

    def resizeEvent(self, evt):
        self.after_resize(evt.size().width(), evt.size().height())

    def after_resize(self, w, h):
        lv_width = 200
        sdTxt_height = 120
        bar_height = 30
        self.op_bar.move(200, h - sdTxt_height - bar_height * 2)
        self.op_bar.resize(w - lv_width, bar_height)
        self.send_bar.move(200, h - bar_height)
        self.send_bar.resize(w - lv_width, bar_height)

        self.lv.resize(lv_width, h)
        self.rcTxt.move(lv_width, 0)
        self.rcTxt.resize(w - lv_width, h - sdTxt_height - bar_height * 2)
        self.sdTxt.move(lv_width, h - sdTxt_height - bar_height)
        self.sdTxt.resize(w - lv_width, sdTxt_height)

    def lv_clicked(self, model_index):
        cur_chat = self.chats[model_index.row()]
        if cur_chat['mode'] == 'user':
            self.setWindowTitle(cur_chat['data'].nick_name)

    def refresh_cur_chat(self):
        if self.cur_chat['mode'] == 'user':
            self.setWindowTitle(self.cur_chat['data'].nick_name)

    def get_in_chat_index(self, chat):
        if chat['mode'] == 'user':
            name = chat['data'].name
            match = lambda x: x['mode'] == 'user' and x['data'].name == name
        for i in range(len(self.chats)):
            if match(self.chats[i]):
                return i

        return -1

    def chat_to(self, chat):
        i = self.get_in_chat_index(chat)
        if i == -1:
            if chat['mode'] == 'user':
                self.lv_model.appendRow(
                    QStandardItem(QIcon("./client/image/man.png"),
                                  chat['data'].nick_name))
            self.chats.append(chat)
            self.cur_chat = chat
            i = len(self.chats) - 1
        else:
            self.cur_chat = self.chats[i]
        self.refresh_cur_chat()
        self.lv.setCurrentIndex(self.lv_model.index(i, 0))

    def fill_msg(self, data):
        ufrom = data['from']
        uto = data['to']
        val = data['val']
        ufrom_nickname = ufrom
        try:
            self.rcTxt.setPlainText(self.rcTxt.toPlainText() + '%s:%s\n' %
                                    (ufrom_nickname, val))
        except Exception as ex:
            print(ex)

    def do_recv_msg(self, data):
        self.msg_signal.emit(data)

    def send(self):
        # val = self.sdTxt.toHtml()
        val = self.sdTxt.toPlainText()
        if self.cur_chat['mode'] == 'user':
            MsgWorker().send_msg(
                msg_lib.build_chat_msg(MsgWorker().user_info.name,
                                       self.cur_chat['data'].name, val))
        # self.rcTxt.setHtml(self.rcTxt.toHtml()+'\n我:%s'%val)
        self.rcTxt.setPlainText(self.rcTxt.toPlainText() + '我:%s\n' % val)
        self.sdTxt.setPlainText('')

    def closeEvent(self, event):
        self.chats.clear()
        if self.after_close:
            self.after_close()
Esempio n. 30
0
class Reference_Line(QFrame):
    """
    竖直和水平参考线
    """
    Moved_Signal = pyqtSignal(list)

    def __init__(self, Type, Position, *args, **kwargs):
        """
        Type:参考线的类型 H:水平,V:竖直
        Position:添加的位置 H的时候是y位置,V的时候是x的位置
        """
        QFrame.__init__(self, *args, **kwargs)
        self.Type = Type
        self.Color = 'green'
        self.Position = Position
        self.Label = MyLabel(self.Type, self)
        self.Label.Can_Move_with_Mouse = True
        self.Label.Anchor_In_Parent = True
        self.Line = QFrame(self)
        self.Update_Appearance()
        self.id = ""

    def Update_Appearance(self):
        try:
            factor = self.parentWidget().Scale_Factor
        except:
            factor = 1
        self.P_Factor = factor
        self.Label.setStyleSheet("color:white;background:" + self.Color)
        self.Label.setMinimumSize(50, 20)
        self.Label.setAlignment(Qt.AlignHCenter)
        P = self.parentWidget()
        if self.Type == "H":
            self.resize(P.width(), self.height())
            self.Line.setStyleSheet("border: 2px solid " + self.Color)
            self.Line.resize(P.width(), 1)
            self.move(-P.x(), int(round(self.Position * factor)))

        if self.Type == "V":
            self.resize(self.width(), P.height())
            self.Line.setStyleSheet("color:white;border: 2px solid " +
                                    self.Color)
            self.Line.resize(1, P.height())
            self.move(int(round(self.Position * factor)), -P.y())
        #print(self.Type + " Reference Line Send Move Signal")
        print(self.sender())
        self.Moved_Signal.emit([self.x(), self.y()])

    @pyqtSlot(list)
    def Refer_Sync_From_Point(self, p):
        print(self.id + " Syncing from Point " + str(p))
        self.move(p[0], p[1])

    def moveEvent(self, event):
        if self.Type == "H":
            self.Position = int(round(self.y() / self.P_Factor))
        if self.Type == "V":
            self.Position = int(round(self.x() / self.P_Factor))
        #print(self.id + " Refernce moveevent! Send " +
        #     str([self.x(), self.y()]))
        if self.hasFocus():
            print(self.Type + " Reference_Line Send Move Signal")
            print(self.sender())
            self.Moved_Signal.emit([self.x(), self.y()])

    def resizeEvents(self, event):
        #print(self.id + " Refernce resizeevent! Send " +
        #    str([self.x(), self.y()]))
        print(self.Type + " Reference_Line Send resize Signal")
        print(self.sender())
        self.Moved_Signal.emit([self.x(), self.y()])
 def _setWindowObjects(self):
     #ComboBox  in the home page
     #Window size 500,600
     self.styleChoise = QLabel("January", self)
     self.styleChoise.setStyleSheet("background-color: red")
     self.resize(20, 40)
     self.styleChoise.move(280, 40)  #Position
     ComboBox = QComboBox(self)
     ComboBox.addItem('January')
     ComboBox.addItem('February')
     ComboBox.addItem('March')
     ComboBox.addItem('April')
     ComboBox.addItem('May')
     ComboBox.addItem('June')
     ComboBox.addItem('July')
     ComboBox.addItem('August')
     ComboBox.addItem('September')
     ComboBox.addItem('October')
     ComboBox.addItem('November')
     ComboBox.addItem('December')
     ComboBox.move(20, 40)  #size
     ComboBox.activated[str].connect(self.style_Choise)
     #Frame for the box
     frame = QFrame(self)
     frame.setFrameShape(QFrame.StyledPanel)
     frame.setLineWidth(10)
     frame.setMidLineWidth(10)
     frame.resize(200, 400)
     frame.move(280, 90)
     frame.setStyleSheet(".QFrame { background-color : white } ")
     formLayout = QFormLayout()
     formLayout.addWidget(frame)
     self.setLayout(formLayout)
     #Buttons
     btn1 = QPushButton('AddNew', self)
     btn1.resize(75, 50)
     btn1.move(20, 90)
     btn1.setStatusTip('AddNew')
     btn2 = QPushButton('Edit', self)
     btn2.resize(75, 50)
     btn2.move(100, 90)
     btn2.setStatusTip('Edit')
     btn3 = QPushButton('View', self)
     btn3.resize(75, 50)
     btn3.move(175, 90)
     btn3.setStatusTip('View')  ###
     btn4 = QPushButton('Delete', self)
     btn4.resize(75, 50)
     btn4.move(20, 150)
     btn4.setStatusTip('Delete')
     btn5 = QPushButton('ShowAll', self)
     btn5.resize(75, 50)
     btn5.move(100, 150)
     btn5.setStatusTip('ShowAll')
     btn6 = QPushButton('RemoveDups', self)
     btn6.resize(75, 50)
     btn6.move(175, 150)
     btn6.setStatusTip('Removes Duplicate')  ####
     btn7 = QPushButton('Upload', self)
     btn7.resize(75, 50)
     btn7.move(20, 210)
     btn7.setStatusTip('Uploads online')
     btn8 = QPushButton('Backup', self)
     btn8.resize(75, 50)
     btn8.move(100, 210)
     btn8.setStatusTip('Backup Contacts')
     btn9 = QPushButton('Share', self)
     btn9.resize(75, 50)
     btn9.move(175, 210)
     btn9.setStatusTip('Share Contact')  ####
     btn10 = QPushButton('SendText', self)
     btn10.resize(75, 50)
     btn10.move(20, 270)
     btn10.setStatusTip('Send Text')
     btn11 = QPushButton('CallContact', self)
     btn11.resize(75, 50)
     btn11.move(100, 270)
     btn11.setStatusTip('Call Selected Contact')
     btn12 = QPushButton('CopyContact', self)
     btn12.resize(75, 50)
     btn12.move(175, 270)
     btn12.setStatusTip('Copy contact')  ###
     btn13 = QPushButton('Quit', self)
     btn13.resize(75, 50)
     btn13.move(400, 500)
     btn13.setStatusTip('Quit Application')
     #Click activities on the buttons
     btn13.clicked.connect(self.closeApplication)
     btn5.clicked.connect(self.showAllContacts)
Esempio n. 32
0
class Radiobuttons(QWidget):
    """ Create grouped radio button widget for language choice """
    def __init__(self, label, instruction, button_list, states):
        super(Radiobuttons, self).__init__()

        self.states = states
        self.default = -1
        self.id = None

        self.frame = QFrame(self)
        self.frame.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
        self.frame.setStyleSheet("border: 1px solid gray; border-radius: 10px;"
                                 "background-color: rgb(230, 200, 167);")
        # self.frame.setStyleSheet("border: 1px solid gray; border-radius: 10px;
        # background-color: rgba(230, 200, 167);")
        self.setMinimumSize(300, 300)
        self.setAutoFillBackground(True)
        self.title_label = QLabel(label)
        self.title_label.setFont(QFont("Arial", 18))
        self.title_label.setAlignment(Qt.AlignCenter)
        self.instruct_label = QLabel(instruction)
        self.instruct_label.setFont(QFont("Arial", 14))
        self.instruct_label.setAlignment(Qt.AlignCenter)
        self.radio_group_box = QGroupBox()
        self.radio_group_box.setObjectName(
            "ColoredGroupBox")  # Changed here...
        self.radio_group_box.setStyleSheet("""QGroupBox#ColoredGroupBox{
                                                    border: 1px solid gray;
                                                    border-radius: 10px;
                                                    background-color: rgb(230, 200, 167);
                                                    margin-top: 10px;
                                                    margin-bottom: 10px;
                                                    margin-left: 20px;
                                                    margin-right: 20px;}""")
        self.radio_group_box.setFont(QFont("Helvetica MS", 18))
        self.radio_button_group = QButtonGroup()
        self.setAttribute(Qt.WA_TranslucentBackground)

        self.radio_button_list = []
        for b in button_list:
            rb = QRadioButton(b)
            rb.setStyleSheet("""QRadioButton{
                                    font: 14pt Arial;
                                    background-color: rgb(230, 200, 167);
                                    border: 0px;
                                    padding: 4px;} 
                                QRadioButton::indicator{ 
                                    width: 20px; 
                                    height: 30px;}""")
            self.radio_button_list.append(rb)

        self.radio_button_layout = QVBoxLayout()
        counter = 0
        for b in self.radio_button_list:
            self.radio_button_layout.addWidget(b)
            self.radio_button_group.addButton(b)
            self.radio_button_group.setId(b, counter)
            b.clicked.connect(self.radio_button_clicked)
            counter += 1
        self.radio_group_box.setLayout(self.radio_button_layout)

        self.main_layout = QVBoxLayout(self.frame)
        self.main_layout.setSpacing(20)
        self.main_layout.addWidget(self.title_label)
        self.main_layout.addWidget(self.radio_group_box)
        self.main_layout.addStretch(1)
        self.main_layout.addWidget(self.instruct_label)
        self.setLayout(self.main_layout)

    def set_frame(self, on):
        """ Turn frame around radio burtton widget on and off """
        if on:
            self.frame.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
            self.frame.setStyleSheet(
                "border: 1px solid gray; border-radius: 10px;"
                "background-color: rgb(230, 200, 167);")
        else:
            self.frame.setStyleSheet(
                "border: 0px solid gray; border-radius: 10px;"
                "background-color: rgb(230, 200, 167);")

    def set_default(self, val):
        """ Set default button """
        self.default = val
        self.radio_button_list[self.default].setChecked(True)

    def set_ID(self, player_id):
        """ Set ID for radiobuutons """
        self.id = player_id

    def resizeEvent(self, event):
        """ Deal with resize event """
        self.frame.resize(self.size())
        QWidget.resizeEvent(self, event)

    def radio_button_clicked(self):
        """ Store ID of checked button when clicked """
        self.states.machine.radio_complete.emit(
            self.radio_button_group.checkedId(), self.id)