Example #1
0
class MainWindow(QMainWindow):
    def __init__(self, h, w):
        super(MainWindow, self).__init__()
        self.widgetList = QStackedWidget()
        self.widgetList.setFixedSize(w, h)
        self.setCentralWidget(self.widgetList)
        self.widgetList.addWidget(Welcome(self))
Example #2
0
class MainWindow(QWidget):

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

        self.title_widget = TitleWidget()

        authorization_widget = AuthorizationWidget()
        authorization_widget.authorized.connect(self.on_authorized)

        self.main_stacked = QStackedWidget()
        self.main_stacked.setFixedSize(400, 260)
        self.main_stacked.addWidget(authorization_widget)

        self.footer_widget = FooterWidget()

        self.main_layout = QGridLayout()
        self.main_layout.setContentsMargins(24, 12, 24, 12)
        self.main_layout.addWidget(self.title_widget, 0, 0, Qt.AlignTop)
        self.main_layout.addWidget(self.main_stacked, 1, 0, Qt.AlignCenter)
        self.main_layout.addWidget(self.footer_widget, 2, 0, Qt.AlignBottom)

        self.setLayout(self.main_layout)
        self.resize(480, 320)

    def mousePressEvent(self, a0) -> None:
        self.setFocus()

    @pyqtSlot()
    def on_authorized(self):
        broadcast_setup_widget = BroadcastSetupWidget()
        broadcast_setup_widget.broadcast_created.connect(self.on_broadcast_created)
        self.switch_to_widget(broadcast_setup_widget)

    @pyqtSlot(Broadcast)
    def on_broadcast_created(self, broadcast: Broadcast):
        broadcast_ready_widget = BroadcastReadyWidget(broadcast)
        broadcast_ready_widget.new_broadcast.connect(self.on_authorized)
        self.switch_to_widget(broadcast_ready_widget)

    def switch_to_widget(self, widget: QWidget):
        focus_widget = self.main_stacked.focusWidget()
        self.main_stacked.setCurrentIndex(self.main_stacked.addWidget(widget))
        self.main_stacked.removeWidget(focus_widget)
        focus_widget.deleteLater()
Example #3
0
class LeftPanel(QWidget):
    def __init__(self, width, hight, parent=None):
        super(LeftPanel, self).__init__(parent)

        # set width and hight
        self.width = width
        self.hight = hight

        # declare path string
        self.unknownUser = "******"
        self.menuIcon = "../img/menu-icon.png"

        # declare user picture label
        self.pic = QLabel(self)
        self.pic.setScaledContents(True)

        # declare control panel
        self.controlPanel = QStackedWidget(self)
        # declare control button
        # for visitor and temp user
        self.homeB0 = QPushButton("Home")
        self.searchB0 = QPushButton("Search")
        # for develop has no transaction history
        self.homeB1 = QPushButton("Home")
        self.searchB1 = QPushButton("Search")
        self.ProjectB1 = QPushButton("Project")
        self.messageB1 = QPushButton("Message")
        self.historyB1 = QPushButton("History")
        self.manageTeam1 = QPushButton("Team Manager")
        # for develop has transaction history
        self.homeB2 = QPushButton("Home")
        self.searchB2 = QPushButton("Search")
        self.ProjectB2 = QPushButton("Project")
        self.messageB2 = QPushButton("Message")
        self.historyB2 = QPushButton("History")
        self.manageTeam2 = QPushButton("Team Manager")
        # for client has no transaction history
        self.homeB3 = QPushButton("Home")
        self.searchB3 = QPushButton("Search")
        self.ProjectB3 = QPushButton("Project")
        self.messageB3 = QPushButton("Message")
        self.historyB3 = QPushButton("History")
        # for client has transaction history
        self.homeB4 = QPushButton("Home")
        self.searchB4 = QPushButton("Search")
        self.ProjectB4 = QPushButton("Project")
        self.messageB4 = QPushButton("Message")
        self.historyB4 = QPushButton("History")
        # for superuser
        self.manage = QPushButton("System Manager")
        self.messageB5 = QPushButton("Message")
        # for new user
        self.homeB5 = QPushButton("Home")
        self.searchB5 = QPushButton("Search")

        # declare function button
        self.funcbutt = QToolButton(self)
        self.mu = QMenu()
        # declare action
        self.personalInfo = QAction("Personal Information")
        self.grandStat = QAction("Grand Statistic")
        self.out = QAction("Sign Out")

        # start initUI
        self.initUI()

    def initUI(self):
        # set LeftPanel size
        self.setFixedSize(self.width, self.hight)

        # set LeftPanel background color
        self.setAutoFillBackground(True)
        palette = QPalette()
        palette.setColor(self.backgroundRole(), QColor(40, 42, 45))
        self.setPalette(palette)

        # set pic
        self.setpic(self.unknownUser)
        # set pic size
        self.pic.setFixedSize(self.width - 20, self.width - 20)
        # add pic to LeftPanel
        self.pic.move(10, 10)

        # set stackWidget size
        self.controlPanel.setFixedSize(self.width, self.hight - 250)
        # add visitor page to controlPanel
        v = QWidget()
        vly = QFormLayout()
        vly.addRow(self.homeB0)
        vly.addRow(self.searchB0)
        v.setLayout(vly)
        self.controlPanel.addWidget(v)
        # add dev has no transaction to controlpanel
        dnt = QWidget()
        dntly = QFormLayout()
        dntly.addRow(self.homeB1)
        dntly.addRow(self.searchB1)
        dntly.addRow(self.ProjectB1)
        dntly.addRow(self.messageB1)
        dntly.addRow(self.historyB1)
        dntly.addRow(self.manageTeam1)
        dnt.setLayout(dntly)
        self.controlPanel.addWidget(dnt)
        # add dev has transaction to controlPanel
        dt = QWidget()
        dtly = QFormLayout()
        dtly.addRow(self.homeB2)
        dtly.addRow(self.searchB2)
        dtly.addRow(self.ProjectB2)
        dtly.addRow(self.messageB2)
        dtly.addRow(self.historyB2)
        dtly.addRow(self.manageTeam2)
        dt.setLayout(dtly)
        self.controlPanel.addWidget(dt)
        # add client has no transaction
        cnt = QWidget()
        cntly = QFormLayout()
        cntly.addRow(self.homeB3)
        cntly.addRow(self.searchB3)
        cntly.addRow(self.ProjectB3)
        cntly.addRow(self.messageB3)
        cntly.addRow(self.historyB3)
        cnt.setLayout(cntly)
        self.controlPanel.addWidget(cnt)
        # add client has transaction
        ct = QWidget()
        ctly = QFormLayout()
        ctly.addRow(self.homeB4)
        ctly.addRow(self.searchB4)
        ctly.addRow(self.ProjectB4)
        ctly.addRow(self.messageB4)
        ctly.addRow(self.historyB4)
        ct.setLayout(ctly)
        self.controlPanel.addWidget(ct)
        # add super user
        su = QWidget()
        suly = QFormLayout()
        suly.addRow(self.manage)
        suly.addRow(self.messageB5)
        su.setLayout(suly)
        self.controlPanel.addWidget(su)
        # add new user
        new = QWidget()
        newly = QFormLayout()
        newly.addRow(self.homeB5)
        newly.addRow(self.searchB5)
        new.setLayout(newly)
        self.controlPanel.addWidget(new)
        # add controlPanel to LeftPanel
        self.controlPanel.setCurrentIndex(0)
        self.controlPanel.move(0, 180)

        # set funcbutt menu
        self.setFuncMenu(False)
        self.funcbutt.setPopupMode(QToolButton.InstantPopup)
        self.funcbutt.setMenu(self.mu)
        # set image for funcbutt
        self.funcbutt.setIcon(QIcon(self.menuIcon))
        self.funcbutt.setIconSize(QSize(60, 30))
        # add funcbutt to LeftPanel
        self.funcbutt.setFixedSize(61, 31)
        self.funcbutt.move(39, self.hight - 43)
        # connect menu event

    def setpic(self, user_id):
        """ set pic to the path image"""
        pixmap = QPixmap("../resources/pictures/" + user_id)
        # when path not found
        if (pixmap.isNull()):
            pixmap = QPixmap(self.unknownUser)
        # scaled and set
        pixmap.scaled(60, 60, Qt.KeepAspectRatio)
        self.pic.setPixmap(pixmap)

    def setFuncMenu(self, login):
        if login:
            self.mu.clear()
            self.mu.addAction(self.grandStat)
            self.mu.addAction(self.personalInfo)
            self.mu.addAction(self.out)
        else:
            self.mu.clear()
            self.mu.addAction(self.grandStat)
Example #4
0
class HomepageUI(QScrollArea):
    """ 首页UI """
    CONTROL_LEFT_DISTANCE = 428

    def __init__(self, *args, **kwargs):
        super(HomepageUI, self).__init__(*args, **kwargs)
        self.container = QWidget(self)  # 全局控件(scrollArea的幕布)
        layout = QHBoxLayout()
        layout.setContentsMargins(QMargins(0, 0, 0, 0))

        # 左侧的菜单列表控件
        self.left_menu = QListWidget(self)
        # 固定宽度
        self.left_menu.setFixedWidth(42)
        layout.addWidget(self.left_menu)
        # 左侧菜单对应的stackedWidget
        self.left_stacked = QStackedWidget(self)
        # 固定宽度
        self.left_stacked.setFixedSize(370, 300)   # 固定宽度,广告的高度

        right_layout = QVBoxLayout()
        menu_ad_layout = QHBoxLayout()  # 菜单与广告布局
        menu_ad_layout.addWidget(self.left_stacked)
        # 图片轮播控件
        self.slide_stacked = SlidingStackedWidget(self)
        # 广告图片的高度
        self.slide_stacked.setFixedHeight(300)
        self.slide_stacked.setMaximumWidth(745)
        # 在轮播控件上选择按钮
        self.control_widget = QWidget(self)
        self.control_widget.setFixedHeight(300)
        self.control_widget.move(self.CONTROL_LEFT_DISTANCE, 0)
        control_layout = QVBoxLayout()
        control_layout.setAlignment(Qt.AlignVCenter)
        self.control_widget.setLayout(control_layout)

        menu_ad_layout.addWidget(self.slide_stacked)
        menu_ad_layout.addStretch()

        right_layout.addLayout(menu_ad_layout)

        # 其他模块
        modules_layout = QGridLayout()
        modules_layout.setContentsMargins(QMargins(0, 0, 0, 0))
        modules_layout.setAlignment(Qt.AlignTop | Qt.AlignLeft)

        # 短信通
        self.instant_message_widget = ModuleWidget(self)
        self.instant_message_widget.setFixedSize(370, 300)
        self.instant_message_widget.setObjectName("moduleWidget")
        self.instant_message_widget.set_title("即时资讯")
        modules_layout.addWidget(self.instant_message_widget, 0, 0)

        # 现货报价
        self.spot_price_widget = ModuleWidget(self)
        self.spot_price_widget.setFixedSize(370, 300)
        self.spot_price_widget.setObjectName("moduleWidget")
        self.spot_price_widget.set_title("现货报价")
        modules_layout.addWidget(self.spot_price_widget, 0, 1)

        # 日报
        self.daily_report_widget = ModuleWidget(self)
        self.daily_report_widget.setFixedSize(370, 300)
        self.daily_report_widget.setObjectName("moduleWidget")
        self.daily_report_widget.set_title("收盘日评")
        modules_layout.addWidget(self.daily_report_widget, 0, 2)
        # 周报
        self.weekly_report_widget = ModuleWidget(self)
        self.weekly_report_widget.setFixedSize(370, 300)
        self.weekly_report_widget.setObjectName("moduleWidget")
        self.weekly_report_widget.set_title("研究周报")
        modules_layout.addWidget(self.weekly_report_widget, 1, 0)

        # 月季报告
        self.monthly_report_widget = ModuleWidget(self)
        self.monthly_report_widget.setFixedSize(370, 300)
        self.monthly_report_widget.setObjectName("moduleWidget")
        self.monthly_report_widget.set_title("月季报告")
        modules_layout.addWidget(self.monthly_report_widget, 1, 1)

        # 月季报告
        self.annual_report_widget = ModuleWidget(self)
        self.annual_report_widget.setFixedSize(370, 300)
        self.annual_report_widget.setObjectName("moduleWidget")
        self.annual_report_widget.set_title("年度报告")
        modules_layout.addWidget(self.annual_report_widget, 1, 2)

        right_layout.addLayout(modules_layout)

        layout.addLayout(right_layout)
        self.container.setLayout(layout)
        self.setWidget(self.container)
        self.setWidgetResizable(True)
        self.horizontalScrollBar().setStyleSheet(HORIZONTAL_SCROLL_STYLE)
        self.verticalScrollBar().setStyleSheet(VERTICAL_SCROLL_STYLE)
        self.left_menu.setObjectName("LeftMenuList")
        self.setStyleSheet(
            "#LeftMenuList{border:none;color:rgb(254,254,254);font-size:14px;"
            "background-color:rgb(233,26,46);outline:none;}"
            "#LeftMenuList::item{padding:5px 0 5px 0px}"
            "#LeftMenuList::item:selected{background-color:rgb(240,240,240);color:rgb(0,0,0);out-line:none}"
            "#moduleWidget{background-color:rgb(254,254,254);border:1px solid rgb(240,240,240)}"
        )
Example #5
0
        super(Downloader, self).__init__()
        self.title = title
        self.url = url
        self.extension = extension

    def run(self):
        book_module.downloadBook(self.title, self.url, self.extension)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    bookmark_module.makeFiles()

    main_win = MainWin()
    search = Search()
    bookmarks = Bookmarks()
    book_page = bookPage()

    stackedWidget = QStackedWidget()
    stackedWidget.addWidget(main_win)
    stackedWidget.addWidget(search)
    stackedWidget.addWidget(bookmarks)
    stackedWidget.addWidget(book_page)

    stackedWidget.setFixedSize(712, 403)
    stackedWidget.setStyleSheet("background-color: rgb(54, 54, 54); "
                                "color: rgb(255, 255, 255);")

    stackedWidget.show()
    sys.exit(app.exec_())