コード例 #1
0
class Ui_Form(object):
    def __init__(self, k):
        config = configparser.ConfigParser()
        config.read('gameSetting.ini')
        self.URL = config['BROWSER']['URL' + str(k)]
        self.gain = config.getfloat('BROWSER', 'gain' + str(k))

        self.Dialog = QtWidgets.QDialog()
        self.setupUi(self.Dialog)

    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(1300, 800)
        Form.setMinimumSize(QtCore.QSize(1300, 800))
        Form.setMaximumSize(QtCore.QSize(1300, 800))
        Form.setMouseTracking(True)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("media/cat.ico"), QtGui.QIcon.Normal,
                       QtGui.QIcon.Off)
        Form.setWindowIcon(icon)
        self.webEngineView = QWebEngineView(Form)
        self.webEngineView.setGeometry(QtCore.QRect(0, 0, 1300, 800))
        self.webEngineView.setMinimumSize(QtCore.QSize(1300, 800))
        self.webEngineView.setMaximumSize(QtCore.QSize(1300, 800))
        self.webEngineView.setMouseTracking(False)
        self.webEngineView.setUrl(QtCore.QUrl(self.URL))
        self.webEngineView.setZoomFactor(self.gain)
        self.webEngineView.setObjectName("webEngineView")

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "黑猫浏览器"))
コード例 #2
0
class Gui(QtWidgets.QWidget):  # Table 위젯과 WebEngine 위젯을 포함하는 pyqt 클래스
    def __init__(self, db_path1, db_path2):
        super().__init__()
        print('Creating Layout...')
        # Layout
        self.setWindowTitle('Finance')
        self.grid = QtWidgets.QGridLayout()
        self.setLayout(self.grid)
        self.resize(1870, 850)
        self.center()

        # Btn
        self.btn1 = QtWidgets.QPushButton('running', self)
        self.btn1.clicked.connect(self.push_btn)

        # WebEngine
        self.browser = QWebEngineView()
        self.browser.setMaximumSize(1200, 1080)

        # Table
        self.table = QtWidgets.QTableWidget(self)
        self.table.setMaximumSize(670, 1080)
        self.table.setAutoScroll(False)

        self.table.setRowCount(0)
        self.table.setColumnCount(7)
        self.table.setColumnWidth(0, 400)
        self.table.setColumnWidth(1, 60)
        self.table.setColumnWidth(2, 60)
        self.table.setColumnWidth(3, 100)
        self.table.setColumnWidth(4, 60)
        self.table.setColumnWidth(5, 60)
        self.table.setColumnWidth(6, 10)

        self.table.setHorizontalHeaderLabels([
            'Title', 'Displayed', 'Created', 'Category', 'Summary', 'Date',
            'NewsId'
        ])
        self.table.cellClicked.connect(self.click_news)

        print('Setting Thread...')
        # Thread 생성
        self.news_thread = NewsThread(db_path1)
        self.disclosure_thread = DisclosureThread(db_path2)
        self.init_table()  # 처음에만 테이블에 정보 넣기

        # Thread 시그널 생성 및 시작
        self.news_thread.get_news_signal.connect(self.update_table)
        self.disclosure_thread.get_disclosure_signal.connect(
            self.update_table2)
        self.news_thread.start()
        self.disclosure_thread.start()

        self.is_run = True

        # Grid
        self.grid.addWidget(self.table, 0, 0)
        self.grid.addWidget(self.browser, 0, 1)
        self.grid.addWidget(self.btn1, 1, 0, 1, 2)

        print('All Completed')
        self.show()

    def center(self):  # 창 가운데로 설정
        qr = self.frameGeometry()
        cp = QtWidgets.QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    @pyqtSlot()
    def push_btn(self):  # 쓰레드 시작 / 정지 slot 함수
        if self.news_thread.is_run and self.disclosure_thread.is_run:
            self.news_thread.is_run = False
            self.disclosure_thread.is_run = False
        else:
            self.news_thread.is_run = True
            self.disclosure_thread.is_run = True

    def init_table(self):
        # 공시크롤링
        init_d_list = self.disclosure_thread.disclosure.get_new_data()
        self.disclosure_thread.disclosure.put_list_to_db(init_d_list)

        # 뉴스크롤링
        init_news = self.news_thread.get_news.get_page_list(FIRST_GET_NEWS_NUM)
        self.news_thread.get_news.put_list_to_db(init_news)

        # 테이블 삽입
        self.put_news_to_table(init_news)
        self.put_d_list_to_table(init_d_list)

        # 정렬
        self.table.sortItems(5, Qt.DescendingOrder)
        self.table.selectRow(0)
        self.click_news()

    def put_news_to_table(self, news_list):  # 테이블에 뉴스크롤링 정보 삽입
        for category in self.news_thread.get_news.categories:
            for data in reversed(news_list[category]):
                if data is not None:
                    now = time.localtime()
                    now_time = f'{now.tm_hour:02}:{now.tm_min:02}:{now.tm_sec:02}'
                    self.table.insertRow(0)
                    self.table.setItem(
                        0, 0, QtWidgets.QTableWidgetItem(data['title']))
                    self.table.setItem(0, 1,
                                       QtWidgets.QTableWidgetItem(now_time))
                    self.table.setItem(
                        0, 2,
                        QtWidgets.QTableWidgetItem(
                            data['createdAt'].split(' ')[-1]))
                    self.table.setItem(0, 3,
                                       QtWidgets.QTableWidgetItem(category))
                    self.table.setItem(
                        0, 4, QtWidgets.QTableWidgetItem(data['summary']))
                    self.table.setItem(
                        0, 5, QtWidgets.QTableWidgetItem(data['createdAt']))
                    self.table.setItem(
                        0, 6, QtWidgets.QTableWidgetItem(data['newsId']))
                    self.table.setRowHeight(0, 30)
                    self.table.scrollToTop()

    def put_d_list_to_table(self, d_list):  # 테이블에 공시크롤링 정보 삽입
        for category in self.disclosure_thread.disclosure.categories:
            for data in reversed(d_list[category]):
                if data is not None:
                    now = time.localtime()
                    now_time = f'{now.tm_hour:02}:{now.tm_min:02}:{now.tm_sec:02}'
                    self.table.insertRow(0)
                    self.table.setItem(
                        0, 0, QtWidgets.QTableWidgetItem(data['title']))
                    self.table.setItem(0, 1,
                                       QtWidgets.QTableWidgetItem(now_time))
                    self.table.setItem(
                        0, 2, QtWidgets.QTableWidgetItem(data['time']))
                    self.table.setItem(
                        0, 3, QtWidgets.QTableWidgetItem(data['company']))
                    self.table.setItem(
                        0, 4, QtWidgets.QTableWidgetItem(data['market']))
                    self.table.setItem(
                        0, 5, QtWidgets.QTableWidgetItem(data['date']))
                    self.table.setItem(
                        0, 6, QtWidgets.QTableWidgetItem(data['report']))
                    self.table.setRowHeight(0, 30)
                    self.table.item(0, 0).setBackground(QColor(100, 255, 0))
                    self.table.item(0, 3).setBackground(QColor(100, 255, 0))
                    self.table.scrollToTop()

    @pyqtSlot(dict)
    def update_table(self, news_list):  # 뉴스 정보 딕셔너리를 받아 테이블 업데이트
        self.btn1.setText('Received News List')
        self.put_news_to_table(news_list)

        row_count = self.table.rowCount()
        if row_count > TABLE_ROW_LIMIT:
            for i in reversed(range(TABLE_DELETE_TO, row_count)):
                self.table.removeRow(i)

    @pyqtSlot(dict)
    def update_table2(self, d_list):  # 공시 정보 업데이트
        self.btn1.setText('Received Disclosure List')
        self.put_d_list_to_table(d_list)

        row_count = self.table.rowCount()
        if row_count > TABLE_ROW_LIMIT:
            for i in reversed(range(TABLE_DELETE_TO, row_count)):
                self.table.removeRow(i)

    @pyqtSlot()
    def click_news(self):  # 뉴스를 클릭할 경우 웹브라우저에 내용 표시
        current_row = self.table.currentRow()
        self.table.selectRow(current_row)

        news_id = self.table.item(current_row, 6).text()
        if news_id[:4] == 'http':
            self.browser.setUrl(QUrl(news_id))
        else:
            try:
                res = requests.get('https://finance.daum.net/content/news/' +
                                   news_id,
                                   headers=self.news_thread.get_news.header)
            except Exception as e:
                print(e)
            json = res.json()
            html = '<h3>' + json['title'] + '</h3>\n' + '<div>' + json[
                'createdAt'] + '</div>' + json['content']
            self.browser.setHtml(html)
コード例 #3
0
class MainUi(Ui_Main_2):
    def __init__(self):
        super().__init__()
        self.init_ui()
    def init_ui(self):
        self.setObjectName("InterFace_1")
        self.resize(1300, 900)
        #设置整个界面的大小、背景        1100, 680        #背景图
        self.setStyleSheet("#InterFace_1{border-image:url(./image/background.png)}")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.label = QtWidgets.QLabel()
        self.label.setMinimumSize(QtCore.QSize(0, 70))
        self.label.setMaximumSize(QtCore.QSize(85, 70))
        self.label = QtWidgets.QLabel("晨曦识别")
        font = QtGui.QFont()
        font.setFamily("微软雅黑")
        font.setPointSize(22)
        self.label.setFont(font)
        self.label.setStyleSheet("#label{border-image:url(./image/total_title.png);color:rgb(0, 255, 255)}")
        self.label.setAlignment(QtCore.Qt.AlignHCenter|QtCore.Qt.AlignTop)
        self.label.setObjectName("label")

        #上方标题    :居中,字体类型、大小
        self.main_widget = QtWidgets.QWidget()  # 创建窗口主部件
        self.main_layout = QtWidgets.QGridLayout()  # 创建主部件的网格布局
        self.main_widget.setLayout(self.main_layout)  # 设置窗口主部件布局为网格布局

        self.up_widget = QtWidgets.QWidget()  # 创建上侧部件
        self.up_widget.setObjectName('up_widget')
        self.up_layout = QtWidgets.QGridLayout()
        self.up_widget.setLayout(self.up_layout)  # 设置上侧部件布局为网格
        self.up_layout.addWidget(self.label, 0, 0, 3, 13)

        self.left_widget = QtWidgets.QWidget()  # 创建左侧部件
        self.left_widget.setObjectName('left_widget')
        self.left_layout = QtWidgets.QGridLayout()  # 创建左侧部件的网格布局层
        self.left_widget.setLayout(self.left_layout)  # 设置左侧部件布局为网格

        self.right_widget = QtWidgets.QWidget()  # 创建右侧部件
        self.right_widget.setObjectName('right_widget')
        self.right_layout = QtWidgets.QGridLayout()
        self.right_widget.setLayout(self.right_layout)  # 设置右侧部件布局为网格
        self.right_widget_2 = QtWidgets.QWidget()  # 创建部件
        self.right_widget_2.setObjectName('right_widget_2')
        self.right_layout_2 = QtWidgets.QGridLayout()
        self.right_widget_3 = QtWidgets.QWidget()  # 创建部件
        self.right_widget_3.setObjectName('right_widget_3')
        self.right_layout_3 = QtWidgets.QGridLayout()

        self.main_layout.addWidget(self.up_widget, 0, 0, 3, 13)
        self.main_layout.addWidget(self.right_widget, 4, 0, 2, 13)  # (0,0,12,2)左侧部件在第0行第0列,占14行2列  总共12列,

        self.setCentralWidget(self.main_widget)  # 设置窗口主部件


        self.up_widget1 = QWebEngineView()  # 创建上侧部件
        self.up_widget1.setObjectName('up_widget1')
        self.up_widget1.setMinimumSize(QtCore.QSize(20, 0))
        self.up_widget1.setMaximumSize(QtCore.QSize(70, 40))
        self.up_widget1.page().setBackgroundColor(QColor('transparent'))
        self.main_layout.addWidget(self.up_widget1,0, 12, 3, 1)
        self.up_button_1 = QtWidgets.QPushButton("")
        self.up_button_1.setObjectName('up')
        self.up_button_3 = QtWidgets.QPushButton("")
        self.up_button_3.setObjectName('up')
        self.up_button_1.setIcon(QIcon(QPixmap('xiaobiao/minus5.png')))
        self.up_button_3.setIcon(QIcon(QPixmap('xiaobiao/times5.png')))
        self.g = 0   #全屏  正常  记录
        self.h = 0   #收    正常  记录
        self.up_button_3.clicked.connect(self.close)  #关闭窗口
        self.up_button_1.clicked.connect(self.show_2)
        self.up_button_1.setFixedSize(70, 40)
        self.up_button_3.setFixedSize(50, 40)
        self.main_layout.addWidget(self.up_button_1, 0, 11, 3, 1)
        self.main_layout.addWidget(self.up_button_3, 0, 12, 3, 1)
        self.main_widget.setStyleSheet('''
        #up {   
              font-family:KaiTi;
              font-size:17px;
              font-weight:200;
             border:none;}
                ''')

        # 然后再以电子病历确定开始功能
        self.x_1 = Ui_Main_2()
        self.right_widget_2.setStyleSheet('''
        background:#082E54;
           ''')
        self.right_layout_2.addWidget(self.x_1, 5, 0, 27, 13)
        self.right_widget_2.setLayout(self.right_layout_2)  # 设置右侧部件布局为网格
        self.main_layout.addWidget(self.right_widget_2, 5, 0, 27, 13)
        self.right_widget_2.show()
        self.setWindowOpacity(1)  # 设置窗口透明度
        self.setWindowFlag(QtCore.Qt.FramelessWindowHint)  # 隐藏边框
        self.main_layout.setSpacing(0)
    def mousePressEvent(self, event):
        if event.button() == QtCore.Qt.LeftButton:
            self.m_flag = True
            self.m_Position = event.globalPos() - self.pos()  # 获取鼠标相对窗口的位置
            event.accept()
            self.setCursor(QtGui.QCursor(QtCore.Qt.OpenHandCursor))  # 更改鼠标图标

    def mouseMoveEvent(self, QMouseEvent):
        if QtCore.Qt.LeftButton and self.m_flag:
            self.move(QMouseEvent.globalPos() - self.m_Position)  # 更改窗口位置
            QMouseEvent.accept()

    def mouseReleaseEvent(self, QMouseEvent):
        self.m_flag = False
        self.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))

    def show_1(self):
        self.g +=1
        x = self.g%2
        if (x== 1):
            self.showNormal()
        else:
            self.showMaximized()
    def show_2(self):
        self.h +=1
        h = self.h%2
        if (h == 1):
            self.showMinimized()
        else:
            self.showMinimized()
コード例 #4
0
class Ui_mainForm(object):
    def setupUi(self, mainForm):
        mainForm.setObjectName("mainForm")
        mainForm.resize(1200, 880)
        self.gridLayout_2 = QtWidgets.QGridLayout(mainForm)
        self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_2.setSpacing(0)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.browser = QWebEngineView(mainForm)
        self.browser.setMinimumSize(QtCore.QSize(0, 500))
        self.browser.setMaximumSize(QtCore.QSize(16777215, 800))
        self.browser.setObjectName("browser")
        self.gridLayout_2.addWidget(self.browser, 1, 0, 1, 2)
        self.console_secondary = QtWidgets.QTextEdit(mainForm)
        self.console_secondary.setMinimumSize(QtCore.QSize(0, 190))
        self.console_secondary.setMaximumSize(QtCore.QSize(16777215, 190))
        self.console_secondary.setStyleSheet("color: rgb(255, 255, 255);\n"
"background-color: rgb(0, 0, 0);\n"
"font: 12pt \"微软雅黑\";")
        self.console_secondary.setObjectName("console_secondary")
        self.gridLayout_2.addWidget(self.console_secondary, 5, 1, 1, 1)
        self.console_main = QtWidgets.QTextEdit(mainForm)
        self.console_main.setMinimumSize(QtCore.QSize(0, 190))
        self.console_main.setMaximumSize(QtCore.QSize(16777215, 190))
        self.console_main.setStyleSheet("color: rgb(255, 255, 255);\n"
"background-color: rgb(0, 0, 0);\n"
"font: 12pt \"微软雅黑\";")
        self.console_main.setObjectName("console_main")
        self.gridLayout_2.addWidget(self.console_main, 5, 0, 1, 1)
        self.widgetBar = QtWidgets.QWidget(mainForm)
        self.widgetBar.setMinimumSize(QtCore.QSize(0, 30))
        self.widgetBar.setMaximumSize(QtCore.QSize(16777215, 30))
        self.widgetBar.setObjectName("widgetBar")
        self.gridLayout = QtWidgets.QGridLayout(self.widgetBar)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setSpacing(0)
        self.gridLayout.setObjectName("gridLayout")
        self.btnBack = QtWidgets.QPushButton(self.widgetBar)
        self.btnBack.setMinimumSize(QtCore.QSize(0, 30))
        self.btnBack.setObjectName("btnBack")
        self.gridLayout.addWidget(self.btnBack, 0, 3, 1, 1)
        self.urlBar = QtWidgets.QLineEdit(self.widgetBar)
        self.urlBar.setStyleSheet("font: 12pt \"微软雅黑\";")
        self.urlBar.setText("")
        self.urlBar.setReadOnly(True)
        self.urlBar.setObjectName("urlBar")
        self.gridLayout.addWidget(self.urlBar, 0, 1, 1, 1)
        self.btnCopyLink = QtWidgets.QPushButton(self.widgetBar)
        self.btnCopyLink.setMinimumSize(QtCore.QSize(0, 30))
        self.btnCopyLink.setObjectName("btnCopyLink")
        self.gridLayout.addWidget(self.btnCopyLink, 0, 0, 1, 1)
        self.btnHome = QtWidgets.QPushButton(self.widgetBar)
        self.btnHome.setMinimumSize(QtCore.QSize(0, 30))
        self.btnHome.setObjectName("btnHome")
        self.gridLayout.addWidget(self.btnHome, 0, 2, 1, 1)
        self.gridLayout_2.addWidget(self.widgetBar, 0, 0, 1, 2)
        self.widgetTools = QtWidgets.QWidget(mainForm)
        self.widgetTools.setMinimumSize(QtCore.QSize(0, 30))
        self.widgetTools.setMaximumSize(QtCore.QSize(16777215, 30))
        self.widgetTools.setStyleSheet("")
        self.widgetTools.setObjectName("widgetTools")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.widgetTools)
        self.gridLayout_3.setContentsMargins(0, 0, 0, 0)
        self.gridLayout_3.setSpacing(0)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.btnGetAllLinks = QtWidgets.QPushButton(self.widgetTools)
        self.btnGetAllLinks.setEnabled(False)
        self.btnGetAllLinks.setMinimumSize(QtCore.QSize(0, 30))
        self.btnGetAllLinks.setMaximumSize(QtCore.QSize(16777215, 30))
        self.btnGetAllLinks.setObjectName("btnGetAllLinks")
        self.gridLayout_3.addWidget(self.btnGetAllLinks, 0, 0, 1, 1)
        self.btnOpenSource = QtWidgets.QPushButton(self.widgetTools)
        self.btnOpenSource.setMinimumSize(QtCore.QSize(0, 30))
        self.btnOpenSource.setMaximumSize(QtCore.QSize(16777215, 30))
        self.btnOpenSource.setObjectName("btnOpenSource")
        self.gridLayout_3.addWidget(self.btnOpenSource, 0, 2, 1, 1)
        self.lblLastPlayEpisodeName = QtWidgets.QLabel(self.widgetTools)
        self.lblLastPlayEpisodeName.setObjectName("lblLastPlayEpisodeName")
        self.gridLayout_3.addWidget(self.lblLastPlayEpisodeName, 0, 5, 1, 1)
        self.lblSpace02 = QtWidgets.QLabel(self.widgetTools)
        self.lblSpace02.setText("")
        self.lblSpace02.setObjectName("lblSpace02")
        self.gridLayout_3.addWidget(self.lblSpace02, 0, 8, 1, 1)
        self.lblLastPlay = QtWidgets.QLabel(self.widgetTools)
        self.lblLastPlay.setObjectName("lblLastPlay")
        self.gridLayout_3.addWidget(self.lblLastPlay, 0, 4, 1, 1)
        self.btnAbout = QtWidgets.QPushButton(self.widgetTools)
        self.btnAbout.setMinimumSize(QtCore.QSize(0, 30))
        self.btnAbout.setMaximumSize(QtCore.QSize(16777215, 30))
        self.btnAbout.setObjectName("btnAbout")
        self.gridLayout_3.addWidget(self.btnAbout, 0, 1, 1, 1)
        self.lblLastPlayEpisodeNum = QtWidgets.QLabel(self.widgetTools)
        self.lblLastPlayEpisodeNum.setObjectName("lblLastPlayEpisodeNum")
        self.gridLayout_3.addWidget(self.lblLastPlayEpisodeNum, 0, 7, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(828, 27, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout_3.addItem(spacerItem, 0, 3, 1, 1)
        self.lblSpace01 = QtWidgets.QLabel(self.widgetTools)
        self.lblSpace01.setObjectName("lblSpace01")
        self.gridLayout_3.addWidget(self.lblSpace01, 0, 6, 1, 1)
        self.gridLayout_2.addWidget(self.widgetTools, 2, 0, 1, 2)

        self.retranslateUi(mainForm)
        QtCore.QMetaObject.connectSlotsByName(mainForm)

    def retranslateUi(self, mainForm):
        _translate = QtCore.QCoreApplication.translate
        mainForm.setWindowTitle(_translate("mainForm", "看番神器 V1.0"))
        self.console_main.setHtml(_translate("mainForm", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'微软雅黑\'; font-size:12pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
        self.btnBack.setText(_translate("mainForm", "返回"))
        self.btnCopyLink.setText(_translate("mainForm", "复制链接"))
        self.btnHome.setText(_translate("mainForm", "主页"))
        self.btnGetAllLinks.setText(_translate("mainForm", "抓取链接"))
        self.btnOpenSource.setText(_translate("mainForm", "项目地址"))
        self.lblLastPlayEpisodeName.setText(_translate("mainForm", "无"))
        self.lblLastPlay.setText(_translate("mainForm", "最近一次播放:"))
        self.btnAbout.setText(_translate("mainForm", "关于"))
        self.lblLastPlayEpisodeNum.setText(_translate("mainForm", "第0集"))
        self.lblSpace01.setText(_translate("mainForm", " "))