コード例 #1
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)

        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        self.gridLayout = QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")

        webView = QWebEngineView(self.centralwidget)
        webView.setUrl(QUrl("https://github.com/brcontainer/"))
        webView.setObjectName("webView")

        self.gridLayout.addWidget(webView, 0, 0, 1, 1)

        MainWindow.setCentralWidget(self.centralwidget)

        statusbar = QStatusBar(MainWindow)
        statusbar.setObjectName("statusbar")

        MainWindow.setStatusBar(statusbar)

        self.retranslateUi(MainWindow)

        QMetaObject.connectSlotsByName(MainWindow)
コード例 #2
0
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(563, 339)
        self.widget = QWebEngineView(Dialog)
        self.widget.setGeometry(QtCore.QRect(10, 60, 531, 251))
        self.widget.setObjectName("widget")
        self.pushButtonGo = QtWidgets.QPushButton(Dialog)
        self.pushButtonGo.setGeometry(QtCore.QRect(450, 20, 91, 23))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButtonGo.setFont(font)
        self.pushButtonGo.setObjectName("pushButtonGo")
        self.lineEditURL = QtWidgets.QLineEdit(Dialog)
        self.lineEditURL.setGeometry(QtCore.QRect(100, 20, 331, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEditURL.setFont(font)
        self.lineEditURL.setObjectName("lineEditURL")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(10, 20, 71, 16))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButtonGo.setText(_translate("Dialog", "Go"))
        self.label.setText(_translate("Dialog", "Enter URL"))
コード例 #3
0
ファイル: demoBrowser.py プロジェクト: iorixyz/PythonQT
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(1009, 685)
        self.pushButtonGo = QtWidgets.QPushButton(Dialog)
        self.pushButtonGo.setGeometry(QtCore.QRect(560, 580, 75, 23))
        self.pushButtonGo.setObjectName("pushButtonGo")
        self.lineEditURL = QtWidgets.QLineEdit(Dialog)
        self.lineEditURL.setGeometry(QtCore.QRect(210, 580, 291, 20))
        self.lineEditURL.setObjectName("lineEditURL")
        self.widget = QWebEngineView(Dialog)
        self.widget.setGeometry(QtCore.QRect(90, 50, 851, 491))
        self.widget.setObjectName("widget")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(100, 580, 91, 21))
        self.label.setObjectName("label")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButtonGo.setText(_translate("Dialog", "Go"))
        self.label.setText(_translate("Dialog", "Enter URL"))
コード例 #4
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", "黑猫浏览器"))
コード例 #5
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.qwebengine = QWebEngineView(self.centralwidget)
        self.qwebengine.setGeometry(QtCore.QRect(10, 30, 451, 321))
        self.qwebengine.setAutoFillBackground(False)
        self.qwebengine.setStyleSheet("background-color: rgb(170, 170, 127);")
        self.qwebengine.setObjectName("qwebengine")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
コード例 #6
0
ファイル: Ui_plotly_pyqt.py プロジェクト: kiorry/PYQT
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.qwebengine = QWebEngineView(self.centralwidget)
        self.qwebengine.setGeometry(QtCore.QRect(10, 30, 451, 321))
        self.qwebengine.setAutoFillBackground(False)
        self.qwebengine.setStyleSheet("background-color: rgb(170, 170, 127);")
        self.qwebengine.setObjectName("qwebengine")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
コード例 #7
0
ファイル: project.py プロジェクト: Migelit0/QT_Browser
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.undo = QtWidgets.QPushButton(self.centralwidget)
        self.undo.setObjectName("undo")
        self.gridLayout.addWidget(self.undo, 3, 0, 1, 1)
        self.forward = QtWidgets.QPushButton(self.centralwidget)
        self.forward.setObjectName("forward")
        self.gridLayout.addWidget(self.forward, 3, 1, 1, 1)
        self.update = QtWidgets.QPushButton(self.centralwidget)
        self.update.setObjectName("update")
        self.gridLayout.addWidget(self.update, 3, 2, 1, 1)
        self.gridLayout.addWidget(self.update, 3, 2, 1, 1)
        self.site = QtWidgets.QLineEdit(self.centralwidget)
        self.site.setObjectName("site")
        self.gridLayout.addWidget(self.site, 3, 3, 1, 15)
        self.web = QWebEngineView()
        self.web.setObjectName("web")
        self.gridLayout.addWidget(self.web, 4, 0, 155, 18)
        self.add = QLabel(
            'Автору на печеньки: https://yoomoney.ru/to/410018466402473/200')
        # self.add.enable
        self.gridLayout.addWidget(self.add, 200, 0, 1, 18)
        MainWindow.setCentralWidget(self.centralwidget)

        # self.btn = QPushButton()
        # self.btn.setObjectName("test")
        # self.gridLayout.addWidget(self.btn, 0, 0, 1, 1)

        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(
            _translate("MainWindow", "My Browser (pre-alpha edition)"))
        self.undo.setText(_translate("MainWindow", "<-"))
        self.forward.setText(_translate("MainWindow", "->"))
        self.update.setText(_translate("MainWindow", "update"))
コード例 #8
0
ファイル: main.py プロジェクト: dec1/stackoverflow-egs
class Example(QMainWindow):
    htmlPath = QDir.current()
    htmlPath.cd("html")
    def __init__(self):
        super().__init__()

        self.setObjectName('Main')
        QMetaObject.connectSlotsByName(self)

        self.view = QWebEngineView()
        self.view.settings().setAttribute(QWebEngineSettings.LocalStorageEnabled, True)
        self.view.setObjectName('MapWidget')

        self.window = QWidget()
        self.window.setObjectName('MainWidget')
        self.layout = QGridLayout(self.window)
        self.layout.addWidget(self.view)
        self.setCentralWidget(self.window)

        self.channel = QWebChannel(self.view.page())
        self.view.page().setWebChannel(self.channel)
        self.channel.registerObject("jshelper", self)

        principal = Figure()
        js = JavascriptLink(QUrl.fromLocalFile(self.htmlPath.absoluteFilePath("qwebchannel.js")).toString())
        principal.header.add_child(Element(js.render()))
        map = folium.Map(location=[36, -108],
                             zoom_start=5, tiles='StamenWatercolor').add_to(principal)
        fastestRoute = folium.PolyLine(((40, -110), (50, -110)),
                                       weight=5, color='blue').add_to(map)

        f = Figure()
        f.html.add_child(Element('<button id="myBtn">Try it</button>'))
        f.html.add_child(Element('<p>\n TEST \n</p>'))

        link = JavascriptLink(QUrl.fromLocalFile(self.htmlPath.absoluteFilePath("popup.js")).toString())
        f.html.add_child(Element(link.render()))

        iframe = branca.element.IFrame(html=f.render(), width=500, height=300)
        popup = folium.Popup(iframe, max_width=500)
        fastestRoute.add_child(popup)

        principal.save(self.htmlPath.absoluteFilePath("test.html"))
        self.view.load(QUrl().fromLocalFile(self.htmlPath.absoluteFilePath("test.html")))
        self.setGeometry(100, 100, 1200, 900)
        self.show()

    @pyqtSlot(str)
    def pathSelected(self, lat):
        print(lat)
コード例 #9
0
class Ui_MainWindow_Ex(Ui_MainWindow):
    def setupUi(self, MainWindow):
        super().setupUi(MainWindow)
        # chrome init
        self.qwebView = QWebEngineView(self.groupBox_4)
        sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.qwebView.sizePolicy().hasHeightForWidth())
        self.qwebView.setSizePolicy(sizePolicy)
        self.qwebView.setObjectName("qwebView")
        self.verticalLayout_8.addWidget(self.qwebView)
        # tabbar init
        self.tabBar = QTabBar(self.groupBox_6)
        self.tabBar.setObjectName("tabBar")
        self.verticalLayout_5.insertWidget(1, self.tabBar)
コード例 #10
0
class BrowserDialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(1024, 768)
        self.qwebview = QWebEngineView(Dialog)
        self.qwebview.setGeometry(QtCore.QRect(0, 50, 1020, 711))
        self.qwebview.setObjectName(_fromUtf8("kwebview"))
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(10, 20, 1000, 25))
        self.lineEdit.setObjectName(_fromUtf8("lineEdit"))

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

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(_translate("Browser", "Browser", None))
コード例 #11
0
class AboutDialog(QtWidgets.QDialog, Ui_Dialog):
    def __init__(self):
        super(AboutDialog, self).__init__()
        self.setupUi(self)
        self.setFixedSize(501, 371)

        self.webView = QWebEngineView(self)
        self.webView.setGeometry(QtCore.QRect(0, 20, 481, 281))
        self.webView.setObjectName("webView")

        filenames = 'README'
        md.convert(filenames)
        path = hp.load_file(filenames + '.html')
        self.webView.load(QUrl.fromLocalFile(path))
        self.webView.show()
        self.setWindowTitle(filenames)
コード例 #12
0
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(562, 488)
        self.widget = QWebEngineView(Dialog)
        self.widget.setGeometry(QtCore.QRect(10, 160, 531, 301))
        self.widget.setObjectName("widget")
        self.pushButtonShowMap = QtWidgets.QPushButton(Dialog)
        self.pushButtonShowMap.setGeometry(QtCore.QRect(210, 110, 101, 31))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.pushButtonShowMap.setFont(font)
        self.pushButtonShowMap.setObjectName("pushButtonShowMap")
        self.lineEditLongitude = QtWidgets.QLineEdit(Dialog)
        self.lineEditLongitude.setGeometry(QtCore.QRect(100, 20, 331, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEditLongitude.setFont(font)
        self.lineEditLongitude.setObjectName("lineEditLongitude")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(10, 20, 71, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.lineEditLatitude = QtWidgets.QLineEdit(Dialog)
        self.lineEditLatitude.setGeometry(QtCore.QRect(100, 60, 331, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.lineEditLatitude.setFont(font)
        self.lineEditLatitude.setObjectName("lineEditLatitude")
        self.label_2 = QtWidgets.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(20, 60, 71, 21))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButtonShowMap.setText(_translate("Dialog", "Show Map"))
        self.label.setText(_translate("Dialog", "Longitude"))
        self.label_2.setText(_translate("Dialog", "Latitude"))
コード例 #13
0
class Ui_webDialog(object):
    def __init__(self, webDialog):
        webDialog.setObjectName("webDialog")
        webDialog.resize(721, 571)
        self.gridLayout = QtWidgets.QGridLayout(webDialog)
        self.gridLayout.setObjectName("gridLayout")
        self.webBrowser = QWebEngineView(webDialog)
        self.webBrowser.setUrl(QtCore.QUrl("about:blank"))
        self.webBrowser.setObjectName("webBrowser")
        self.gridLayout.addWidget(self.webBrowser, 0, 0, 1, 1)

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

    def retranslateUi(self, webDialog):
        _translate = QtCore.QCoreApplication.translate
        webDialog.setWindowTitle(_translate("webDialog", "Browser"))
コード例 #14
0
class Ui_BTC_LiveGraph(object):
    def setupUi(self, widget):
        self.mypath = os.path.dirname(__file__)
        widget.setObjectName("BTC_LiveGraph")
        widget.resize(1600, 900)
        widget.setAccessibleDescription("")
        self.htmlreader_BTCLiveGraph = QWebEngineView(widget)
        self.htmlreader_BTCLiveGraph.setGeometry(QRect(10, 10, 1500, 800))
        self.htmlreader_BTCLiveGraph.setAccessibleDescription("")
        self.htmlreader_BTCLiveGraph.setObjectName("htmlreader_BTCLiveGraph")

        self.retranslateUi(widget)
        QMetaObject.connectSlotsByName(widget)

    def retranslateUi(self, widget):
        _translate = QCoreApplication.translate
        widget.setWindowTitle(_translate("BTC_LiveGraph", "BTC Live Graph"))
コード例 #15
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(44, 130, 141, 101))
        self.pushButton_2.setObjectName("pushButton_2")
        self.toolBox = QtWidgets.QToolBox(self.centralwidget)
        self.toolBox.setGeometry(QtCore.QRect(70, 300, 68, 130))
        self.toolBox.setObjectName("toolBox")
        self.page = QtWidgets.QWidget()
        self.page.setGeometry(QtCore.QRect(0, 0, 68, 68))
        self.page.setObjectName("page")
        self.toolBox.addItem(self.page, "")
        self.page_2 = QtWidgets.QWidget()
        self.page_2.setGeometry(QtCore.QRect(0, 0, 68, 68))
        self.page_2.setObjectName("page_2")
        self.toolBox.addItem(self.page_2, "")
        self.webView = QWebEngineView(self.centralwidget)
        self.webView.setGeometry(QtCore.QRect(239, 40, 481, 381))
        self.webView.setUrl(QtCore.QUrl("https://www.baidu.com/"))
        self.webView.setObjectName("webView")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.toolBox.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_2.setText(_translate("MainWindow", "PushButton"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.page),
                                 _translate("MainWindow", "Page 1"))
        self.toolBox.setItemText(self.toolBox.indexOf(self.page_2),
                                 _translate("MainWindow", "Page 2"))
コード例 #16
0
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(728, 480)
        self.horizontalLayout = QtWidgets.QHBoxLayout(Form)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QPlainTextEdit(Form)
        self.label.setMinimumSize(QtCore.QSize(80, 0))
        self.label.setReadOnly(True)
        self.label.appendPlainText("")
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setObjectName("pushButton")
        self.pushButton1 = QtWidgets.QPushButton(Form)
        self.pushButton1.setObjectName("pushButton1")
        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setMinimumSize(QtCore.QSize(80, 0))
        self.lineEdit.setObjectName("lineEdit")
        self.verticalLayout.addWidget(self.lineEdit)
        self.verticalLayout.addWidget(self.pushButton)
        self.verticalLayout.addWidget(self.pushButton1)
        self.horizontalLayout.addLayout(self.verticalLayout)
        self.webView = QWebEngineView(Form)
        #self.webView.setUrl(QtCore.QUrl("about:blank"))
        self.webView.setObjectName("webView")
        self.webView.setMinimumSize(QtCore.QSize(500, 0))
        self.horizontalLayout.addWidget(self.webView)

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

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "web"))
        self.pushButton.setText(_translate("Form", "发送(run js)"))
        self.pushButton1.setText(_translate("Form", "发送(信号槽)"))
コード例 #17
0
ファイル: force1.py プロジェクト: cybereum/Test
class Ui_Force(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1200, 900)
        MainWindow.setAutoFillBackground(False)
        MainWindow.setStyleSheet("background-color: rgb(15, 45, 80);\n"
                                 "QPushButton { color: red }\n"
                                 "QLineEdit { color: red }\n"
                                 "QComboBox { color: red }\n"
                                 "")
        MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
        MainWindow.setAnimated(True)
        MainWindow.setDockNestingEnabled(True)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalScrollBar = QtWidgets.QScrollBar(self.centralwidget)
        self.horizontalScrollBar.setGeometry(QtCore.QRect(-10, 540, 761, 20))
        self.horizontalScrollBar.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalScrollBar.setObjectName("horizontalScrollBar")
        self.label_7 = QtWidgets.QLabel(self.centralwidget)
        self.label_7.setGeometry(QtCore.QRect(380, 480, 50, 51))
        font = QtGui.QFont()
        font.setKerning(True)
        self.label_7.setFont(font)
        self.label_7.setAutoFillBackground(False)
        self.label_7.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.label_7.setText("")
        self.label_7.setPixmap(
            QtGui.QPixmap("../../Blockchain_Schedule/Logos/circle2.png"))
        self.label_7.setScaledContents(True)
        self.label_7.setObjectName("label_7")
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        self.progressBar.setGeometry(QtCore.QRect(340, 450, 118, 23))
        self.progressBar.setProperty("value", 41)
        self.progressBar.setObjectName("progressBar")
        self.groupBox_4 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_4.setGeometry(QtCore.QRect(40, 10, 1000, 750))
        self.groupBox_4.setObjectName("groupBox_4")
        self.webEngineView = QWebEngineView(self.groupBox_4)
        self.webEngineView.setGeometry(QtCore.QRect(20, 30, 900, 700))
        self.webEngineView.setUrl(
            QtCore.QUrl(
                "http://blockchainforprojects.com/wp-content/uploads/2018/11/Off_Plat.html"
            ))
        self.webEngineView.setObjectName("webEngineView")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 762, 22))
        self.menubar.setObjectName("menubar")
        self.menuFile = QtWidgets.QMenu(self.menubar)
        self.menuFile.setObjectName("menuFile")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.dockWidget = QtWidgets.QDockWidget(MainWindow)
        self.dockWidget.setObjectName("dockWidget")
        self.dockWidgetContents = QtWidgets.QWidget()
        self.dockWidgetContents.setObjectName("dockWidgetContents")
        self.dockWidget.setWidget(self.dockWidgetContents)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.dockWidget)
        self.actionOpen_unsubmitted_Transaction = QtWidgets.QAction(MainWindow)
        self.actionOpen_unsubmitted_Transaction.setObjectName(
            "actionOpen_unsubmitted_Transaction")
        self.actionNew_Transaction = QtWidgets.QAction(MainWindow)
        self.actionNew_Transaction.setObjectName("actionNew_Transaction")
        self.menuFile.addAction(self.actionOpen_unsubmitted_Transaction)
        self.menuFile.addAction(self.actionNew_Transaction)
        self.menubar.addAction(self.menuFile.menuAction())

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

        #target_url = "http://www.google.com")
        #data = urllib2.urlopen(target_url) # it's a file like object and works just like a file
        #for line in data: # files are iterable
        #print line

        #data = urllib2.urlopen("http://www.google.com").read(20000) # read only 20 000 chars
        #data = data.split("\n") # then split it into lines
        #for line in data:
        #print(line)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Project Network"))
        self.groupBox_4.setTitle(_translate("MainWindow", "GroupBox"))
        self.menuFile.setTitle(_translate("MainWindow", "File"))
        self.actionOpen_unsubmitted_Transaction.setText(
            _translate("MainWindow", "Open unsubmitted Transaction"))
        self.actionNew_Transaction.setText(
            _translate("MainWindow", "New Transaction"))
コード例 #18
0
class Ui_MainWindow(QMainWindow):
    def setupUi(self, MainWindow):
        self.setWindowIcon(QtGui.QIcon('starbucks_icon.jpg'))
        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        self.menu_2 = QtWidgets.QMenu(self.menubar)
        self.menu_2.setObjectName("menu_2")
        self.menu_3 = QtWidgets.QMenu(self.menubar)
        self.menu_3.setObjectName("menu_3")
        self.setMenuBar(self.menubar)

        self.shiqu = QtWidgets.QAction(self)
        self.shiqu.setObjectName("shiqu")

        self.shiquerji = QtWidgets.QAction(self)
        self.shiquerji.setObjectName("shiquerji")

        self.zhuzhuang = QtWidgets.QAction(self)
        self.zhuzhuang.setObjectName("zhuzhuang")

        self.bingtu = QtWidgets.QAction(self)
        self.bingtu.setObjectName("bingtu")

        self.fenbu = QtWidgets.QAction(self)
        self.fenbu.setObjectName("fenbu")

        self.shiqufenbu = QtWidgets.QAction(self)
        self.shiqufenbu.setObjectName("shiqufenbu")

        self.guojiajianbian = QtWidgets.QAction(self)
        self.guojiajianbian.setObjectName("guojiajianbian")

        self.menu.addAction(self.shiqu)
        self.menu.addAction(self.shiquerji)
        self.menu_2.addAction(self.zhuzhuang)
        self.menu_2.addAction(self.bingtu)
        self.menu_3.addAction(self.fenbu)
        self.menu_3.addAction(self.shiqufenbu)
        self.menu_3.addAction(self.guojiajianbian)
        self.menubar.addAction(self.menu.menuAction())
        self.menubar.addAction(self.menu_2.menuAction())
        self.menubar.addAction(self.menu_3.menuAction())

        self.listWidget = QtWidgets.QListWidget()
        self.listWidget.setFixedSize(200, 500)
        self.listWidget.setObjectName("listView")
        self.listWidget.close()

        self.set_topk()
        self.set_topr()
        self.set_score()
        self.set_webwindow()

        vbox = QtWidgets.QGridLayout()
        self.two = QtWidgets.QWidget()
        hbox = QtWidgets.QHBoxLayout()
        hbox.addWidget(self.topk)
        hbox.addWidget(self.topr)
        hbox.addWidget(self.score)
        self.two.setLayout(hbox)

        self.three = QtWidgets.QWidget()
        hbox_three = QtWidgets.QHBoxLayout()
        hbox_three.addWidget(self.web)
        hbox_three.addWidget(self.listWidget)
        self.listWidget.close()
        self.three.setLayout(hbox_three)

        vbox.addWidget(self.two)
        vbox.addWidget(self.three)
        self.main = QtWidgets.QWidget()
        self.resize(1600, 700)
        self.main.setLayout(vbox)
        self.setCentralWidget(self.main)

        self.retranslateUi(MainWindow)
        self.search_k.clicked.connect(self.search_kfun)
        self.shiqu.triggered.connect(self.shiqufun)
        self.shiquerji.triggered.connect(self.shiquerjifun)
        self.zhuzhuang.triggered.connect(self.zhuzhuangfun)
        self.bingtu.triggered.connect(self.bingtufun)
        self.guojiajianbian.triggered.connect(self.guojiajianbianfun)
        self.fenbu.triggered.connect(self.fenbufun)
        self.shiqufenbu.triggered.connect(self.shiqufenbufun)
        self.time_analysis.clicked.connect(self.time_analysisfun)
        self.search_r.clicked.connect(self.search_rfun)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

        MainWindow.show()
        self.listWidget.close()

    def set_topk(self):
        self.topk = QtWidgets.QGroupBox("关键词检索")
        self.topk.setObjectName("topk")
        hbox = QtWidgets.QHBoxLayout()

        self.key = QtWidgets.QComboBox(self.topk)
        self.key.setObjectName("key")

        self.key.addItem("")
        self.key.addItem("Brand")
        self.key.addItem("Store Number")
        self.key.addItem("Store Name")
        self.key.addItem("Ownership Type")
        self.key.addItem("Street Address")
        self.key.addItem("City")
        self.key.addItem("State/Province")
        self.key.addItem("Country")
        self.key.addItem("Postcode")
        self.key.addItem("Phone Number")
        self.key.addItem("Timezone")

        self.keyword_text = ""
        self.key.activated[str].connect(self.keyword_onActivated)

        self.keyword = QtWidgets.QLineEdit(self.topk)
        self.keyword.setObjectName("keyword")
        self.keyword.setFixedWidth(60)

        self.label_k = QtWidgets.QLabel(self.topk)
        self.label_k.setObjectName("label_k")

        self.input_k = QtWidgets.QLineEdit(self.topk)
        self.input_k.setObjectName("input_k")

        self.label_lonk = QtWidgets.QLabel(self.topk)
        self.label_lonk.setObjectName("label")
        self.label_latk = QtWidgets.QLabel(self.topk)
        self.label_latk.setObjectName("label_latk")

        self.search_k = QtWidgets.QPushButton(self.topk)
        self.search_k.setObjectName("search_k")
        self.search_k.setFixedWidth(60)

        self.input_lat = QtWidgets.QLineEdit(self.topk)
        self.input_lat.setObjectName("input_lat")
        self.input_lat.setFixedWidth(50)

        self.input_lon = QtWidgets.QLineEdit(self.topk)
        self.input_lon.setObjectName("input_lon")
        self.input_lon.setFixedWidth(50)

        self.time_analysis = QtWidgets.QPushButton(self.topk)
        self.time_analysis.setObjectName("time_analysis")
        self.time_analysis.setFixedWidth(100)

        hbox.addWidget(self.key)
        hbox.addWidget(self.keyword)
        hbox.addWidget(self.label_lonk)
        hbox.addWidget(self.input_lon)
        hbox.addWidget(self.label_latk)
        hbox.addWidget(self.input_lat)
        hbox.addWidget(self.label_k)
        hbox.addWidget(self.input_k)
        hbox.addWidget(self.search_k)
        hbox.addWidget(self.time_analysis)
        self.topk.setLayout(hbox)

    def set_topr(self):
        hbox_r = QtWidgets.QHBoxLayout()

        self.topr = QtWidgets.QGroupBox("距离范围检索")
        self.topr.setObjectName("topr")

        self.label_lonr = QtWidgets.QLabel(self.topr)
        self.label_lonr.setObjectName("lonr")
        self.label_latr = QtWidgets.QLabel(self.topr)
        self.label_latr.setObjectName("label_latr")

        self.search_r = QtWidgets.QPushButton(self.topr)
        self.search_r.setObjectName("search_r")

        self.input_lat_r = QtWidgets.QLineEdit(self.topr)
        self.input_lat_r.setObjectName("input_lat_r")
        self.input_lat_r.setFixedWidth(50)

        self.input_lon_r = QtWidgets.QLineEdit(self.topr)
        self.input_lon_r.setObjectName("input_lon_r")
        self.input_lon_r.setFixedWidth(50)

        self.input_r = QtWidgets.QLineEdit(self.topr)
        self.input_r.setObjectName("input_r")

        self.rsearch = QtWidgets.QLabel(self.topr)

        self.rsearch.setObjectName("rsearch")

        hbox_r.addWidget(self.label_lonr)
        hbox_r.addWidget(self.input_lon_r)
        hbox_r.addWidget(self.label_latr)
        hbox_r.addWidget(self.input_lat_r)
        hbox_r.addWidget(self.rsearch)
        hbox_r.addWidget(self.input_r)
        hbox_r.addWidget(self.search_r)

        self.topr.setLayout(hbox_r)

    def set_score(self):
        hbox_s = QtWidgets.QHBoxLayout()

        self.score = QtWidgets.QGroupBox("评分")
        self.score.setObjectName("score")

        self.label_score = QtWidgets.QLabel(self.score)
        self.label_score.setObjectName("label_score")

        self.countSpineBox = QtWidgets.QSpinBox()
        self.countSpineBox.setRange(0, 10)
        self.countSpineBox.setEnabled(False)

        self.in_score = QtWidgets.QPushButton(self.score)
        self.in_score.setObjectName("in_score")
        self.in_score.setEnabled(False)

        hbox_s.addWidget(self.label_score)
        hbox_s.addWidget(self.countSpineBox)
        hbox_s.addWidget(self.in_score)
        self.score.setLayout(hbox_s)

    def set_webwindow(self):
        self.web = QtWidgets.QGroupBox("显示结果")
        hbox_web = QtWidgets.QHBoxLayout()
        self.webwindow = QWebEngineView()
        self.webwindow.setAutoFillBackground(True)
        self.webwindow.setObjectName("webwindow")

        hbox_web.addWidget(self.webwindow)
        self.web.setLayout(hbox_web)

    def search_kfun(self):
        input_attr = self.keyword.text()
        input_lon = float(self.input_lon.text())
        input_lat = float(self.input_lat.text())
        input_k = int(self.input_k.text())

        starbucks_df = read_data()
        start = time.time()
        df_find = find_same(starbucks_df,
                            self.keyword_text.decode(encoding="utf-8"),
                            input_attr)
        df_find = preprocessing(df_find)

        df_temp = topk(df_find, input_lon, input_lat, input_k)
        end = time.time()
        run_time = end - start
        self.statusBar().showMessage('查询时间为: ' + str(run_time))

        draw_map(df_temp, "simtopk.html")

        k_analysis = topk_k_analysis(df_find, input_lon, input_lat)
        bar_time = Bar("该经纬度下topk计算时间随k变化")
        bar_pic(bar_time, k_analysis, 'k', 'time', 'k时间顺序')
        bar_time.render(r'time_analysis.html')

        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/simtopk.html'

        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.clear()

        for i in range(df_temp.shape[0]):
            item = QtWidgets.QListWidgetItem(df_temp['Store Name'][i])
            self.listWidget.addItem(item)
        self.listWidget.show()

        self.listWidget.itemClicked['QListWidgetItem*'].connect(self.dia)

    def dia(self):
        self.countSpineBox.setEnabled(True)
        self.in_score.setEnabled(True)
        self.in_score.clicked.connect(self.pingfen)

    def pingfen(self):
        score_var = int(self.countSpineBox.text())

        starbucks_df = read_data()
        starbucks_df = input_score(starbucks_df, score_var,
                                   self.listWidget.currentItem().text())
        starbucks_df.to_csv('starbucks.csv', encoding="utf_8_sig", index=False)

    def keyword_onActivated(self, text):
        self.keyword_text = text.encode("utf-8")

    def search_rfun(self):
        lon_r_text = float(self.input_lon_r.text())
        lat_r_text = float(self.input_lat_r.text())
        r_text = int(self.input_r.text())

        starbucks_df = read_data()
        df_find = preprocessing(starbucks_df)
        df_temp = r_cal(df_find, lon_r_text, lat_r_text, r_text)
        df_temp = df_temp.reset_index(drop=False)
        draw_map(df_temp, "range.html")

        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/range.html'

        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.clear()

        for i in range(df_temp.shape[0]):
            item = QtWidgets.QListWidgetItem(df_temp['Store Name'][i])
            self.listWidget.addItem(item)
        self.listWidget.show()

        self.listWidget.itemClicked['QListWidgetItem*'].connect(self.dia)

    def time_analysisfun(self):
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/time_analysis.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def shiqufun(self):
        # 时区图
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/Amout_in_Each_Timezone_Pie.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def shiquerjifun(self):
        # 时区二级图
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/Amount_of_Country_in_Timezone_Pie.html'
        self.webwindow.load(QtCore.QUrl(url))
        # self.setCentralWidget(self.webwindow)
        self.webwindow.show()
        self.listWidget.close()

    def shiqujianbianfun(self):
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/map_time.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def zhuzhuangfun(self):
        # 柱状图
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/Amount_Each_Country_Bar.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def bingtufun(self):
        # 饼状图
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/Amount_Each_Country_Pie.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def fenbufun(self):
        # 店铺分布图
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/fenbutu.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def shiqufenbufun(self):
        # 店铺时区分布图
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/map_time.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def guojiajianbianfun(self):
        path = os.getcwd()
        url = pathname2url(path)
        url = 'file:' + url + '/distribution_map_country.html'
        self.webwindow.load(QtCore.QUrl(url))
        self.webwindow.show()
        self.listWidget.close()

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label_k.setText(_translate("MainWindow", "结果数:"))
        self.label_lonk.setText(_translate("MainWindow", "经度:"))
        self.label_latk.setText(_translate("MainWindow", "纬度:"))
        self.search_k.setText(_translate("MainWindow", "查询"))
        self.time_analysis.setText(_translate("MainWindow", "查询时间分析"))
        self.label_lonr.setText(_translate("MainWindow", "经度:"))
        self.label_latr.setText(_translate("MainWindow", "纬度:"))
        self.search_r.setText(_translate("MainWindow", "查询"))
        self.rsearch.setText(_translate("MainWindow", "距离范围(米):"))
        self.label_score.setText(_translate("MainWindow", "输入分数(1-10):"))
        self.in_score.setText(_translate("MainWindow", "评分"))
        self.menu.setTitle(_translate("MainWindow", "按时区数据统计"))
        self.menu_2.setTitle(_translate("MainWindow", "按国家数据统计"))
        self.menu_3.setTitle(_translate("MainWindow", "分布地图"))
        self.shiqu.setText(_translate("MainWindow", "各时区店铺数量统计饼图"))
        self.shiquerji.setText(_translate("MainWindow", "各时区店铺数量统计饼图(详细)"))
        self.zhuzhuang.setText(_translate("MainWindow", "柱状图"))
        self.bingtu.setText(_translate("MainWindow", "饼图"))
        self.guojiajianbian.setText(_translate("MainWindow", "各国家店铺数量渐变图"))
        self.fenbu.setText(_translate("MainWindow", "店铺分布图"))
        self.shiqufenbu.setText(_translate("MainWindow", "时区店铺分布图"))
コード例 #19
0
ファイル: month.py プロジェクト: qwr2018/qinwenrui
class Ui_Form(object):
    def setupUi(self, Form):
        self.path = './graph/monthtype.html'
        Form.setObjectName("Form")
        self.setWindowIcon(QIcon('douyin.png'))
        Form.resize(905, 700)
        self.widget = QWebEngineView(self)
        # 原来的self.widget.setGeometry(QtCore.QRect(0, 88, 910, 650))
        self.widget.setGeometry(QtCore.QRect(-9, 90, 927, 635))  #h=644 y=90
        self.widget.setObjectName("widget")
        font = QtGui.QFont()
        font.setFamily("幼圆")
        font.setPointSize(10)
        self.comboBox_2 = QtWidgets.QComboBox(Form)
        self.comboBox_2.setGeometry(QtCore.QRect(130, 20, 111, 49))
        self.comboBox_2.setObjectName("comboBox_2")
        self.comboBox_2.setFont(font)
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.comboBox_2.addItem("")
        self.label_2 = QtWidgets.QLabel(Form)
        self.label_2.setGeometry(QtCore.QRect(49, 20, 69, 41))
        font = QtGui.QFont()
        font.setFamily("幼圆")
        font.setPointSize(18)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.comboBox_4 = QtWidgets.QComboBox(Form)
        self.comboBox_4.setGeometry(QtCore.QRect(338, 20, 92, 49))
        self.comboBox_4.setObjectName("comboBox_4")
        font.setFamily("幼圆")
        font.setPointSize(11)
        self.comboBox_4.setFont(font)
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.label_4 = QtWidgets.QLabel(Form)
        self.label_4.setGeometry(QtCore.QRect(262, 20, 69, 41))
        font = QtGui.QFont()
        font.setFamily("幼圆")
        font.setPointSize(18)
        self.label_4.setFont(font)
        self.label_4.setObjectName("label_4")
        self.radioButton = QtWidgets.QRadioButton(Form)
        self.radioButton.setGeometry(QtCore.QRect(462, 21, 125, 41))
        font = QtGui.QFont()
        font.setFamily("Yu Gothic UI Semilight")
        font.setPointSize(10)
        self.radioButton.setFont(font)
        self.radioButton.setObjectName("radioButton")
        self.checkBox = QtWidgets.QCheckBox(Form)
        self.checkBox.setGeometry(QtCore.QRect(692, 21, 133, 41))
        font = QtGui.QFont()
        font.setFamily("Yu Gothic UI Semilight")
        font.setPointSize(10)
        self.checkBox.setFont(font)
        self.checkBox.setObjectName("checkBox")
        #美化
        self.meihuabt1 = QtWidgets.QPushButton(Form)
        self.meihuabt1.setGeometry(QtCore.QRect(4, 2, 14, 14))
        self.meihuabt1.setText("")
        self.meihuabt1.setObjectName("meihuabt1")
        self.meihuabt2 = QtWidgets.QPushButton(Form)
        self.meihuabt2.setGeometry(QtCore.QRect(32, 2, 14, 14))
        self.meihuabt2.setText("")
        self.meihuabt2.setObjectName("meihuabt2")
        self.meihuabt3 = QtWidgets.QPushButton(Form)
        self.meihuabt3.setGeometry(QtCore.QRect(60, 2, 14, 14))
        self.meihuabt3.setText("")
        self.meihuabt3.setObjectName("meihuabt3")
        self.meihuabt1.setStyleSheet(
            '''QPushButton{background:#F76677;border-radius:5px;}QPushButton:hover{background:red;}'''
        )
        self.meihuabt2.setStyleSheet(
            '''QPushButton{background:#F7D674;border-radius:5px;}QPushButton:hover{background:yellow;}'''
        )
        self.meihuabt3.setStyleSheet(
            '''QPushButton{background:#6DDF6D;border-radius:5px;}QPushButton:hover{background:green;}'''
        )
        Form.setWindowOpacity(0.96)
        Form.setWindowFlag(QtCore.Qt.FramelessWindowHint)
        Form.setStyleSheet('''background-color:#FFF0F50 ;''')
        self.meihuabt3.clicked.connect(self.close)
        self.meihuabt1.clicked.connect(self.showMinimized)
        self.radioButton.toggled.connect(self.display)
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "电影词云"))
        self.comboBox_2.setItemText(0, _translate("Form", "所有年份"))
        self.comboBox_2.setItemText(1, _translate("Form", "  2018"))
        self.comboBox_2.setItemText(2, _translate("Form", "  2017"))
        self.comboBox_2.setItemText(3, _translate("Form", "  2016"))
        self.comboBox_2.setItemText(4, _translate("Form", "  2015"))
        self.label_2.setText(_translate("Form", "年份"))
        self.comboBox_4.setItemText(0, _translate("Form", "  1"))
        self.comboBox_4.setItemText(1, _translate("Form", "  2"))
        self.comboBox_4.setItemText(2, _translate("Form", "  3"))
        self.comboBox_4.setItemText(3, _translate("Form", "  4"))
        self.comboBox_4.setItemText(4, _translate("Form", "  5"))
        self.comboBox_4.setItemText(5, _translate("Form", "  6"))
        self.comboBox_4.setItemText(6, _translate("Form", "  7"))
        self.comboBox_4.setItemText(7, _translate("Form", "  8"))
        self.comboBox_4.setItemText(8, _translate("Form", "  9"))
        self.comboBox_4.setItemText(9, _translate("Form", " 10"))
        self.comboBox_4.setItemText(10, _translate("Form", " 11"))
        self.comboBox_4.setItemText(11, _translate("Form", " 12"))
        self.label_4.setText(_translate("Form", "月份"))
        self.radioButton.setText(_translate("Form", "WATCH ME"))
        self.checkBox.setText(_translate("Form", "KEEP IT?"))

    def display(self):
        self.radioButton.setChecked(True)
        conn = pymysql.connect(host='127.0.0.1',
                               user='******',
                               passwd='714511',
                               db='qinwenrui',
                               port=3306,
                               charset='utf8mb4')

        year = self.comboBox_2.currentText().replace(' ', '')
        month = self.comboBox_4.currentText().replace(' ', '')  #输入

        sql = 'SELECT * FROM `dianying`;'
        df = pd.read_sql(sql, conn)
        if year != '所有年份':
            a = df[(df.年份 == year) & (df.月份 == int(month))]
        else:
            a = df[(df.月份 == int(month))]

        M = []
        TYPE = a[['题材', '票房']]
        c = TYPE[(TYPE.题材 == '犯罪')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '喜剧')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '剧情')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '纪录片')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '奇幻')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '动作')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '冒险')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '悬疑')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '动画')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '战争')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '家庭')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '科幻')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        c = TYPE[(TYPE.题材 == '历史')]
        money = 0
        for k in c.index.tolist():
            money = money + c.loc[k].values[1]
        M.append(money)

        #TYPE.loc[rows]获取信息
        tp = [
            '犯罪', '喜剧', '剧情', '纪录片', '奇幻', '动作', '冒险', '悬疑', '动画', '战争', '家庭',
            '科幻', '历史'
        ]

        pie = Pie('{}年{}月题材票房占比'.format(year, month),
                  title_pos='center',
                  width=907,
                  height=619)  #h=625
        pie._option['animation'] = False
        pie.use_theme('dark')
        pie.add('',
                tp,
                M,
                center=[50, 50],
                radius=[0, 60],
                is_label_show=True,
                legend_orient='vertical',
                legend_pos='left')
        pie.render('./graph/monthtype.html')
        self.widget.load(QUrl.fromLocalFile('/graph/monthtype.html'))
コード例 #20
0
ファイル: code_BigReport.py プロジェクト: kevintandi/lapwing
class BigReport(QMdiSubWindow, form_BigReport.Ui_frmBigReport):

    # create "resized" as a signal that the window can emit
    # we respond to this signal with the form's resizeMe method below
    resized = pyqtSignal()

    def __init__(self):
        super(self.__class__, self).__init__()
        self.setupUi(self)
        self.mdiParent = ""
        self.myHtml = ""
        self.resized.connect(self.resizeMe)
        self.lstDates.currentRowChanged.connect(self.FillSpeciesForDate)
        self.lstLocations.currentRowChanged.connect(
            self.FillSpeciesForLocation)
        self.lstLocations.doubleClicked.connect(
            lambda: self.CreateLocation(self.lstLocations))
        self.tblNewLocationSpecies.itemDoubleClicked.connect(
            lambda: self.CreateLocation(self.tblNewLocationSpecies))
        self.lstDates.doubleClicked.connect(
            lambda: self.CreateSpeciesList(self.lstDates))
        self.lstSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.lstSpecies))
        self.lstLocationSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.lstLocationSpecies))
        self.lstLocationUniqueSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.lstLocationUniqueSpecies))
        self.lstNewLifeSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.lstNewLifeSpecies))
        self.tblNewYearSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.tblNewYearSpecies))
        self.tblNewMonthSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.tblNewMonthSpecies))
        self.tblNewCountrySpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.tblNewCountrySpecies))
        self.tblNewStateSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.tblNewStateSpecies))
        self.tblNewCountySpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.tblNewCountySpecies))
        self.tblNewLocationSpecies.doubleClicked.connect(
            lambda: self.CreateIndividual(self.tblNewLocationSpecies))
        self.tblSpecies.doubleClicked.connect(self.TblSpeciesClicked)

        # right-click menu actions to widgets as appropriate
        self.tblSpecies.addAction(self.actionSetSpeciesFilter)
        self.tblSpecies.addAction(self.actionSetFirstDateFilter)
        self.tblSpecies.addAction(self.actionSetLastDateFilter)
        self.lstLocations.addAction(self.actionSetLocationFilter)
        self.lstDates.addAction(self.actionSetDateFilter)
        self.lstSpecies.addAction(self.actionSetSpeciesFilter)
        self.lstLocationSpecies.addAction(self.actionSetSpeciesFilter)
        self.lstLocationUniqueSpecies.addAction(self.actionSetSpeciesFilter)
        self.lstNewLifeSpecies.addAction(self.actionSetSpeciesFilter)
        self.tblNewYearSpecies.addAction(self.actionSetSpeciesFilter)
        self.tblNewYearSpecies.addAction(self.actionSetDateFilterToYear)
        self.tblNewMonthSpecies.addAction(self.actionSetSpeciesFilter)
        self.tblNewMonthSpecies.addAction(self.actionSetDateFilterToMonth)
        self.tblNewCountrySpecies.addAction(self.actionSetSpeciesFilter)
        self.tblNewCountrySpecies.addAction(self.actionSetLocationFilter)
        self.tblNewStateSpecies.addAction(self.actionSetSpeciesFilter)
        self.tblNewStateSpecies.addAction(self.actionSetLocationFilter)
        self.tblNewCountySpecies.addAction(self.actionSetSpeciesFilter)
        self.tblNewCountySpecies.addAction(self.actionSetLocationFilter)
        self.tblNewLocationSpecies.addAction(self.actionSetSpeciesFilter)
        self.tblNewLocationSpecies.addAction(self.actionSetLocationFilter)

        # connect right-click actions to methods
        self.actionSetDateFilter.triggered.connect(self.setDateFilter)
        self.actionSetFirstDateFilter.triggered.connect(
            self.setFirstDateFilter)
        self.actionSetLastDateFilter.triggered.connect(self.setLastDateFilter)
        self.actionSetSpeciesFilter.triggered.connect(self.setSpeciesFilter)
        self.actionSetCountryFilter.triggered.connect(self.setLocationFilter)
        self.actionSetStateFilter.triggered.connect(self.setLocationFilter)
        self.actionSetCountyFilter.triggered.connect(self.setLocationFilter)
        self.actionSetLocationFilter.triggered.connect(self.setLocationFilter)
        self.actionSetDateFilterToYear.triggered.connect(self.setDateFilter)
        self.actionSetDateFilterToMonth.triggered.connect(self.setDateFilter)

        self.webMap = QWebEngineView(self.tabMap)
        self.webMap.setUrl(QUrl("about:blank"))
        self.webMap.setObjectName("webMap")

        self.tabAnalysis.setCurrentIndex(0)
        self.speciesList = []
        self.filter = code_Filter.Filter()
        self.filteredSightingList = []

    def CreateLocation(self, callingWidget):
        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
        if callingWidget.objectName() == "lstLocations":
            locationName = callingWidget.currentItem().text()
        if callingWidget.objectName() == "tblNewLocationSpecies":
            locationName = callingWidget.item(callingWidget.currentRow(),
                                              0).text()
            if callingWidget.currentColumn() != 0:
                QApplication.restoreOverrideCursor()
                return
        sub = code_Location.Location()
        sub.mdiParent = self.mdiParent
        sub.FillLocation(locationName)
        self.parent().parent().addSubWindow(sub)
        self.mdiParent.PositionChildWindow(sub, self)
        sub.show()
        QApplication.restoreOverrideCursor()

    def CreateIndividual(self, callingWidget):
        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
        if callingWidget.objectName() in ([
                "lstSpecies", "lstLocationSpecies", "lstLocationUniqueSpecies",
                "lstNewLifeSpecies"
        ]):
            species = callingWidget.currentItem().text()
        if callingWidget.objectName() in ([
                "tblNewYearSpecies", "tblNewMonthSpecies",
                "tblNewCountrySpecies", "tblNewStateSpecies",
                "tblNewCountySpecies", "tblNewLocationSpecies"
        ]):
            species = callingWidget.item(callingWidget.currentRow(), 1).text()
            if callingWidget.currentColumn() != 1:
                QApplication.restoreOverrideCursor()
                return
        sub = code_Individual.Individual()
        sub.mdiParent = self.mdiParent
        sub.FillIndividual(species)
        self.parent().parent().addSubWindow(sub)
        self.mdiParent.PositionChildWindow(sub, self)
        sub.show()
        sub.resizeMe()
        QApplication.restoreOverrideCursor()

    def CreateSpeciesList(self, callingWidget):
        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
        if callingWidget.objectName() == "lstDates":
            date = callingWidget.currentItem().text()

        filter = code_Filter.Filter()
        filter.setStartDate(date)
        filter.setEndDate(date)

        sub = code_Lists.Lists()
        sub.mdiParent = self.mdiParent
        sub.FillSpecies(filter)
        self.parent().parent().addSubWindow(sub)
        self.mdiParent.PositionChildWindow(sub, self)
        sub.show()
        QApplication.restoreOverrideCursor()

    def FillAnalysisReport(self, filter):
        # save filter for later use
        self.filter = filter

        # create subset of master sightings list for this filter
        self.filteredSightingList = deepcopy(
            self.mdiParent.db.GetSightings(filter))
        filteredSightingList = self.filteredSightingList

        # ****Setup Species page****
        # get species and first/last date data from db
        speciesListWithDates = self.mdiParent.db.GetSpeciesWithData(
            filter, self.filteredSightingList, "Subspecies")

        # abort if filter produced no sightings
        if len(speciesListWithDates) == 0:
            return (False)

    # set up tblSpecies column headers and widths
        self.tblSpecies.setColumnCount(4)
        self.tblSpecies.setRowCount(len(speciesListWithDates))
        self.tblSpecies.horizontalHeader().setVisible(True)
        self.tblSpecies.setHorizontalHeaderLabels(
            ['Tax', 'Species', 'First', 'Last'])
        header = self.tblSpecies.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblSpecies.setShowGrid(False)

        # add species and dates to table row by row
        R = 0
        for species in speciesListWithDates:
            taxItem = QTableWidgetItem()
            taxItem.setData(Qt.DisplayRole, R + 1)
            speciesItem = QTableWidgetItem()
            speciesItem.setText(species[0])
            speciesItem.setData(Qt.UserRole, QVariant(species[4]))
            firstDateItem = QTableWidgetItem()
            firstDateItem.setData(Qt.DisplayRole, species[1])
            lastDateItem = QTableWidgetItem()
            lastDateItem.setData(Qt.DisplayRole, species[2])
            self.tblSpecies.setItem(R, 0, taxItem)
            self.tblSpecies.setItem(R, 1, speciesItem)
            self.tblSpecies.setItem(R, 2, firstDateItem)
            self.tblSpecies.setItem(R, 3, lastDateItem)

            self.speciesList.append(species[4])

            R = R + 1

        # ****Setup Dates page****
        listDates = self.mdiParent.db.GetDates(filter, filteredSightingList)
        self.lstDates.addItems(listDates)
        self.lstDates.setSpacing(2)
        if len(listDates) > 0:
            self.lstDates.setCurrentRow(0)
            self.FillSpeciesForDate()

        # ****Setup Locations page****
        listLocations = self.mdiParent.db.GetLocations(filter, "OnlyLocations",
                                                       filteredSightingList)
        for l in listLocations:
            self.lstLocations.addItem(l)
        self.lstLocations.setSpacing(2)
        if len(listLocations) > 0:
            self.lstLocations.setCurrentRow(0)
            self.FillSpeciesForLocation()
            self.lblLocations.setText("Locations (" + str(len(listLocations)) +
                                      ")")

        # ****Setup New Species for Dates page****
        speciesListFilter = code_Filter.Filter()
        speciesListFilter.setSpeciesList(self.speciesList)
        sightingListForSpeciesSubset = self.mdiParent.db.GetSightings(
            speciesListFilter)

        yearSpecies = self.mdiParent.db.GetNewYearSpecies(
            filter, filteredSightingList, sightingListForSpeciesSubset)
        lifeSpecies = self.mdiParent.db.GetNewLifeSpecies(
            filter, filteredSightingList, sightingListForSpeciesSubset)
        monthSpecies = self.mdiParent.db.GetNewMonthSpecies(
            filter, filteredSightingList, sightingListForSpeciesSubset)

        # set up tblNewYearSpecies column headers and widths
        self.tblNewYearSpecies.setColumnCount(2)
        self.tblNewYearSpecies.setRowCount(len(yearSpecies) + 1)
        self.tblNewYearSpecies.horizontalHeader().setVisible(False)
        header = self.tblNewYearSpecies.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblNewYearSpecies.setShowGrid(False)

        if len(yearSpecies) > 0:
            R = 1
            for ys in yearSpecies:
                yearItem = QTableWidgetItem()
                yearItem.setText(ys[0])
                newYearSpeciesItem = QTableWidgetItem()
                newYearSpeciesItem.setText(ys[1])
                self.tblNewYearSpecies.setItem(R, 0, yearItem)
                self.tblNewYearSpecies.setItem(R, 1, newYearSpeciesItem)
                R = R + 1
            self.tblNewYearSpecies.removeRow(0)

        self.lblNewYearSpecies.setText("New year species (" +
                                       str(len(yearSpecies)) + ")")

        # set up tblNewMonthSpecies column headers and widths
        self.tblNewMonthSpecies.setColumnCount(2)
        self.tblNewMonthSpecies.setRowCount(len(monthSpecies) + 1)
        self.tblNewMonthSpecies.horizontalHeader().setVisible(False)
        header = self.tblNewMonthSpecies.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblNewMonthSpecies.setShowGrid(False)

        if len(monthSpecies) > 0:
            R = 1
            for ms in monthSpecies:
                monthItem = QTableWidgetItem()
                monthItem.setText(ms[0])
                newMonthSpeciesItem = QTableWidgetItem()
                newMonthSpeciesItem.setText(ms[1])
                self.tblNewMonthSpecies.setItem(R, 0, monthItem)
                self.tblNewMonthSpecies.setItem(R, 1, newMonthSpeciesItem)
                R = R + 1
            self.tblNewMonthSpecies.removeRow(0)

        self.lblNewMonthSpecies.setText("New month species (" +
                                        str(len(monthSpecies)) + ")")

        # set up lstNewLifeSpecies
        if len(lifeSpecies) > 0:
            self.lstNewLifeSpecies.addItems(lifeSpecies)
            self.lstNewLifeSpecies.setSpacing(2)

        self.lblNewLifeSpecies.setText("New life species (" +
                                       str(len(lifeSpecies)) + ")")

        # ****Setup new Location Species page****
        countrySpecies = self.mdiParent.db.GetNewCountrySpecies(
            filter, filteredSightingList, sightingListForSpeciesSubset,
            self.speciesList)
        stateSpecies = self.mdiParent.db.GetNewStateSpecies(
            filter, filteredSightingList, sightingListForSpeciesSubset,
            self.speciesList)
        countySpecies = self.mdiParent.db.GetNewCountySpecies(
            filter, filteredSightingList, sightingListForSpeciesSubset,
            self.speciesList)
        locationSpecies = self.mdiParent.db.GetNewLocationSpecies(
            filter, filteredSightingList, sightingListForSpeciesSubset,
            self.speciesList)

        # set up tblNewCountrySpecies column headers and widths
        self.tblNewCountrySpecies.setColumnCount(2)
        self.tblNewCountrySpecies.setRowCount(len(countrySpecies))
        self.tblNewCountrySpecies.horizontalHeader().setVisible(False)
        header = self.tblNewCountrySpecies.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblNewCountrySpecies.setShowGrid(False)

        if len(countrySpecies) > 0:
            R = 0
            for ms in countrySpecies:
                countryItem = QTableWidgetItem()
                countryItem.setText(self.mdiParent.db.GetCountryName(ms[0]))
                newCountrySpeciesItem = QTableWidgetItem()
                newCountrySpeciesItem.setText(ms[1])
                self.tblNewCountrySpecies.setItem(R, 0, countryItem)
                self.tblNewCountrySpecies.setItem(R, 1, newCountrySpeciesItem)
                R = R + 1

        self.lblNewCountrySpecies.setText("New country species (" +
                                          str(len(countrySpecies)) + ")")

        # set up tblNewStateSpecies column headers and widths
        self.tblNewStateSpecies.setColumnCount(2)
        self.tblNewStateSpecies.setRowCount(len(stateSpecies))
        self.tblNewStateSpecies.horizontalHeader().setVisible(False)
        header = self.tblNewStateSpecies.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblNewStateSpecies.setShowGrid(False)

        if len(stateSpecies) > 0:
            R = 0
            for ms in stateSpecies:
                stateItem = QTableWidgetItem()
                stateItem.setText(self.mdiParent.db.GetStateName(ms[0]))
                newStateSpeciesItem = QTableWidgetItem()
                newStateSpeciesItem.setText(ms[1])
                self.tblNewStateSpecies.setItem(R, 0, stateItem)
                self.tblNewStateSpecies.setItem(R, 1, newStateSpeciesItem)
                R = R + 1
            self.tblNewStateSpecies.sortByColumn(0, Qt.AscendingOrder)

        self.lblNewStateSpecies.setText("New state species (" +
                                        str(len(stateSpecies)) + ")")

        # set up tblNewCountySpecies column headers and widths
        self.tblNewCountySpecies.setColumnCount(2)
        self.tblNewCountySpecies.setRowCount(len(countySpecies))
        self.tblNewCountySpecies.horizontalHeader().setVisible(False)
        header = self.tblNewCountySpecies.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblNewCountySpecies.setShowGrid(False)

        if len(countySpecies) > 0:
            R = 0
            for ms in countySpecies:
                countyItem = QTableWidgetItem()
                countyItem.setText(ms[0])
                newCountySpeciesItem = QTableWidgetItem()
                newCountySpeciesItem.setText(ms[1])
                self.tblNewCountySpecies.setItem(R, 0, countyItem)
                self.tblNewCountySpecies.setItem(R, 1, newCountySpeciesItem)
                R = R + 1

        self.lblNewCountySpecies.setText("New county species (" +
                                         str(len(countySpecies)) + ")")

        # set up tblNewLocationSpecies column headers and widths
        self.tblNewLocationSpecies.setColumnCount(2)
        self.tblNewLocationSpecies.setRowCount(len(locationSpecies))
        self.tblNewLocationSpecies.horizontalHeader().setVisible(False)
        header = self.tblNewLocationSpecies.horizontalHeader()
        header.setSectionResizeMode(1, QHeaderView.Stretch)
        self.tblNewLocationSpecies.setShowGrid(False)

        if len(locationSpecies) > 0:
            R = 0
            for ms in locationSpecies:
                locationItem = QTableWidgetItem()
                locationItem.setText(ms[0])
                newLocationSpeciesItem = QTableWidgetItem()
                newLocationSpeciesItem.setText(ms[1])
                self.tblNewLocationSpecies.setItem(R, 0, locationItem)
                self.tblNewLocationSpecies.setItem(R, 1,
                                                   newLocationSpeciesItem)
                R = R + 1

        self.lblNewLocationSpecies.setText("New location species (" +
                                           str(len(locationSpecies)) + ")")

        # ****Setup window's main labels****
        # set main species seen lable text
        count = self.mdiParent.db.CountSpecies(self.speciesList)

        self.lblTopSpeciesSeen.setText("Species seen: " + str(count))

        # set main location label, using "All Locations" if none others are selected
        self.mdiParent.SetChildDetailsLabels(self, filter)

        self.setWindowTitle(self.lblLocation.text() + ": " +
                            self.lblDateRange.text())

        if self.lblDetails.text() != "":
            self.lblDetails.setVisible(True)
        else:
            self.lblDetails.setVisible(False)

        self.resizeMe()
        self.scaleMe()

        return (True)

    def FillSpeciesForDate(self):
        # create temporary filter for query with nothing but needed date
        self.lstSpecies.clear()
        date = self.lstDates.currentItem().text()

        tempFilter = code_Filter.Filter()

        tempFilter.setStartDate(date)
        tempFilter.setEndDate(date)

        speciesList = self.mdiParent.db.GetSpecies(tempFilter,
                                                   self.filteredSightingList)

        self.lstSpecies.addItems(speciesList)
        self.lstSpecies.setSpacing(2)

        self.lblSpeciesSeen.setText("Species seen on selected date (" +
                                    str(len(speciesList)) + "):")

    def FillMap(self):

        coordinatesDict = defaultdict()
        mapWidth = self.width() - 20
        mapHeight = self.height() - self.lblLocation.height() - (
            self.lblDateRange.height() * 7.5)
        self.webMap.setGeometry(5, 5, mapWidth, mapHeight)

        for l in range(self.lstLocations.count()):
            locationName = self.lstLocations.item(l).text()
            coordinates = self.mdiParent.db.GetLocationCoordinates(
                locationName)
            coordinatesDict[locationName] = coordinates

        thisMap = code_MapHtml.MapHtml()
        thisMap.mapHeight = mapHeight - 20
        thisMap.mapWidth = mapWidth - 20
        thisMap.coordinatesDict = coordinatesDict

        # save mapHtml in object's variable so we can reload it later
        self.mapHtml = thisMap.html()

        # pass the mapHtml we created to the QWebView widget for display
        self.webMap.setHtml(self.mapHtml)

    def FillSpeciesForLocation(self):
        # create temporary filter for query with nothing but needed location
        location = self.lstLocations.currentItem().text()

        tempFilter = code_Filter.Filter()
        tempFilter.setLocationType("Location")
        tempFilter.setLocationName(location)

        speciesList = self.mdiParent.db.GetSpecies(tempFilter,
                                                   self.filteredSightingList)

        self.lstLocationSpecies.clear()
        self.lstLocationSpecies.addItems(speciesList)
        self.lstLocationSpecies.setSpacing(2)

        uniqueSpecies = self.mdiParent.db.GetUniqueSpeciesForLocation(
            self.filter, location, speciesList, self.filteredSightingList)

        self.lstLocationUniqueSpecies.clear()
        self.lstLocationUniqueSpecies.addItems(uniqueSpecies)
        self.lstLocationUniqueSpecies.setSpacing(2)

        self.lblLocationSpecies.setText("Species at selected location (" +
                                        str(len(speciesList)) + ")")
        self.lblLocationUniqueSpecies.setText(
            "Species seen ONLY at selected location (" +
            str(len(uniqueSpecies)) + ")")

    def TblSpeciesClicked(self):
        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

        currentColumn = self.tblSpecies.currentColumn()
        currentRow = self.tblSpecies.currentRow()

        tempFilter = deepcopy(self.filter)

        if currentColumn == 0:
            # the taxonomy order column was clicked, so abort. We won't create a report.
            # turn off the hourglass cursor before exiting
            QApplication.restoreOverrideCursor()
            return

        if currentColumn == 1:
            # species column has been clicked so create individual window for that species
            species = self.tblSpecies.item(currentRow, 1).data(Qt.UserRole)
            sub = code_Individual.Individual()
            sub.mdiParent = self.mdiParent
            sub.FillIndividual(species)
            self.parent().parent().addSubWindow(sub)
            self.mdiParent.PositionChildWindow(sub, self)
            sub.show()
            sub.resizeMe()

        if currentColumn > 1:
            # date column has been clicked so create species list frame for that dateArray
            # use same start and end date for new filter to show just the single day
            date = self.tblSpecies.item(currentRow, currentColumn).text()
            tempFilter.setStartDate(date)
            tempFilter.setEndDate(date)

            sub = code_Lists.Lists()
            sub.mdiParent = self.mdiParent
            sub.FillSpecies(tempFilter)
            self.parent().parent().addSubWindow(sub)
            self.mdiParent.PositionChildWindow(sub, self)
            sub.show()
            sub.resizeMe()

        QApplication.restoreOverrideCursor()

    def html(self):

        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

        # create start to basic html format
        html = """
            <!DOCTYPE html>
            <html>
            <head>
            </head>
            <style>
            * {
                font-size: 75%;
                font-family: "Times New Roman", Times, serif;
                }
            th {
                text-align: left;
            }
            </style>
            <body>
            """

        # add title information
        html = html + ("<H1>" + self.lblLocation.text() + "</H1>")

        html = html + ("<H3>" + self.lblDateRange.text() + "</H3>")

        html = html + ("<H3>" + self.lblDetails.text() + "</H3>")

        html = html + ("<H3>" + self.lblLocationsVisited.text() + "</H3>")

        html = html + ("<H3>" + self.lblTopSpeciesSeen.text() + "</H3>")

        # grab the map image from the map tap
        # process it into a byte array and encode it
        # so we can insert it inline into the html
        myPixmap = self.webMap.grab()
        myPixmap = myPixmap.scaledToWidth(600, Qt.SmoothTransformation)

        myByteArray = QByteArray()
        myBuffer = QBuffer(myByteArray)
        myBuffer.open(QIODevice.WriteOnly)
        myPixmap.save(myBuffer, "PNG")

        encodedImage = base64.b64encode(myByteArray)

        html = html + ("""
        <img src="data:image/png;base64, 
        """)

        html = html + str(encodedImage)[1:]

        html = html + ("""        
        "  />
        """)

        html = html + ("<H4>" + "Species" + "</H4>")

        html = html + ("<font size='2'>" + "<table width='100%'>" + " <tr>")

        html = html + ("<th>" + "Species" + "</th>" + "<th>" + "First" +
                       "</th> " + "<th></th> " + "<th>" + "Latest" + "</th>" +
                       "</tr>")

        for r in range(self.tblSpecies.rowCount()):
            html = html + (
                "<tr>" + "<td>" + self.tblSpecies.item(r, 1).text() + "</td>" +
                "<td>" + self.tblSpecies.item(r, 2).text() + "</td>" + "<td>" +
                "  " + "</td>" + "<td>" + self.tblSpecies.item(r, 3).text() +
                "</td>" + "</tr>")
        html = html + "</table>"

        html = html + ("<H4>" + "Dates" + "</H4>")

        html = html + ("<font size='2'>" + "<p>")

        # loopthrough the dates listed in lstDates
        # create a filter unique to each date
        # and get species for that date
        for r in range(self.lstDates.count()):
            html = html + ("<b>" + self.lstDates.item(r).text() + "</b>")

            # create filter set to our current location
            filter = deepcopy(self.filter)
            filter.setStartDate(self.lstDates.item(r).text())
            filter.setEndDate(self.lstDates.item(r).text())

            species = self.mdiParent.db.GetSpecies(filter)

            html = html + ("<br>" + "<table width='100%'>" + "<tr>")

            # set up counter R to start a new row after listing each 3 species
            R = 1
            for s in species:
                html = html + ("<td>" + s + "</td>")
                if R == 3:
                    html = html + ("</tr>" + "<tr>")
                    R = 0
                R = R + 1

            html = html + ("<br>" + "<br>" + "</table>")

        html = html + (
            "<H4>" + "Locations" + "</H4>" + "<p>" +
            "Asterisks indicate species seen only at listed location.")

        # loopthrough the locations listed in lstLocations
        # create a filter unique to each location
        # and get species for that date
        for r in range(self.lstLocations.count()):
            html = html + ("<b>" + self.lstLocations.item(r).text() + "</b>")

            # create filter set to our current location
            filter = deepcopy(self.filter)
            filter.setLocationType("Location")
            filter.setLocationName(self.lstLocations.item(r).text())

            species = self.mdiParent.db.GetSpecies(filter)

            uniqueSpecies = self.mdiParent.db.GetUniqueSpeciesForLocation(
                self.filter,
                self.lstLocations.item(r).text(), species,
                self.filteredSightingList)

            html = html + ("<br>" + "<table width='100%'>" + "<tr>")

            # set up counter R to start a new row after listing each 3 species
            R = 1
            for s in species:

                if s in uniqueSpecies:
                    s = s + "*"

                html = html + ("<td>" + s + "</td>")
                if R == 3:
                    html = html + ("</tr>" + "<tr>")
                    R = 0
                R = R + 1

            html = html + ("<br>" + "<br>" + "</table>")

        html = html + ("<p>" + "<H4>" + "New Life Species" + "</H4>" + "<p>" +
                       "<table width='100%'>"
                       "<tr>")

        # set up counter R to start a new row after listing each 3 species
        R = 1

        if self.lstNewLifeSpecies.count() == 0:
            html = html + ("<td>" + "None" + "</td>")

        else:

            # loopthrough the species listed in lstNewLifeSpecies
            for r in range(self.lstNewLifeSpecies.count()):

                html = html + ("<td>" + self.lstNewLifeSpecies.item(r).text() +
                               "</td>")

                if R == 3:
                    html = html + ("</tr>" + "<tr>")
                    R = 0

                R = R + 1

            html = html + ("<br>" + "<br>" + "</table>")

        # set up New Year Species
        html = html + ("<p>" + "<H4>" + "New Year Species" + "</H4>" + "<p>" +
                       "<table width='100%'>" + "<tr>")

        # set up counter R to start a new row after listing each 3 species
        R = 1

        if self.tblNewYearSpecies.rowCount() == 0:
            html = html + ("<td>" + "None" + "</td>")

        else:
            # loopthrough the species listed in lstNewLifeSpecies
            for r in range(self.tblNewYearSpecies.rowCount()):

                html = html + (
                    "<td>" + self.tblNewYearSpecies.item(r, 1).text() + " (" +
                    self.tblNewYearSpecies.item(r, 0).text() + ")" + "</td>")

                if R == 3:
                    html = html + ("</tr>" "<tr>")
                    R = 0

                R = R + 1

            html = html + ("</tr>" + "</table>")

        # set up New Month Species
        html = html + ("<p>" + "<H4>" + "New Month Species" + "</H4>" + "<p>" +
                       "<table width='100%'>" + "<tr>")

        # set up counter R to start a new row after listing each 3 species
        R = 1

        if self.tblNewMonthSpecies.rowCount() == 0:
            html = html + ("<td>" + "None" + "</td>")

        else:

            # loopthrough the species listed in lstNewLifeSpecies
            for r in range(self.tblNewMonthSpecies.rowCount()):

                html = html + (
                    "<td>" + self.tblNewMonthSpecies.item(r, 1).text() + " (" +
                    self.tblNewMonthSpecies.item(r, 0).text() + ")" + "</td>")

                if R == 3:
                    html = html + ("</tr>" "<tr>")
                    R = 0

                R = R + 1

            html = html + ("</tr>" + "</table>")

        # set up New Country Species
        html = html + ("<p>" + "<H4>" + "New Country Species" + "</H4>" +
                       "<p>" + "<table width='100%'>" + "<tr>")

        # set up counter R to start a new row after listing each 3 species
        R = 1

        if self.tblNewCountrySpecies.rowCount() == 0:
            html = html + ("<td>" + "None" + "</td>")

        else:

            # loopthrough the species listed in lstNewLifeSpecies
            for r in range(self.tblNewCountrySpecies.rowCount()):

                html = html + ("<td>" + self.tblNewCountrySpecies.item(
                    r, 1).text() + " (" + self.tblNewCountrySpecies.item(
                        r, 0).text() + ")" + "</td>")

                if R == 2:
                    html = html + ("</tr>" "<tr>")
                    R = 0

                R = R + 1

            html = html + ("</tr>" + "</table>")

        html = html + ("<font size>" + "</body>" + "</html>")

        # set up New State Species
        html = html + ("<p>" + "<H4>" + "New State Species" + "</H4>" + "<p>" +
                       "<table width='100%'>" + "<tr>")

        # set up counter R to start a new row after listing each 3 species
        R = 1

        if self.tblNewStateSpecies.rowCount() == 0:
            html = html + ("<td>" + "None" + "</td>")

        else:

            # loopthrough the species listed in lstNewLifeSpecies
            for r in range(self.tblNewStateSpecies.rowCount()):

                html = html + (
                    "<td>" + self.tblNewStateSpecies.item(r, 1).text() + " (" +
                    self.tblNewStateSpecies.item(r, 0).text() + ")" + "</td>")

                if R == 2:
                    html = html + ("</tr>" "<tr>")
                    R = 0

                R = R + 1

            html = html + ("</tr>" + "</table>")

        # set up New County Species
        html = html + ("<p>" + "<H4>" + "New County Species" + "</H4>" +
                       "<p>" + "<table width='100%'>" + "<tr>")

        # set up counter R to start a new row after listing each 3 species
        R = 1

        if self.tblNewCountySpecies.rowCount() == 0:
            html = html + ("<td>" + "None" + "</td>")

        else:

            # loopthrough the species listed in lstNewLifeSpecies
            for r in range(self.tblNewCountySpecies.rowCount()):

                html = html + ("<td>" + self.tblNewCountySpecies.item(
                    r, 1).text() + " (" + self.tblNewCountySpecies.item(
                        r, 0).text() + ")" + "</td>")

                if R == 2:
                    html = html + ("</tr>" "<tr>")
                    R = 0

                R = R + 1

            html = html + ("</tr>" + "</table>")

        # set up New Location Species
        html = html + ("<p>" + "<H4>" + "New Location Species" + "</H4>" +
                       "<p>" + "<table width='100%'>" + "<tr>")

        # set up counter R to start a new row after listing each 3 species
        R = 1

        if self.tblNewLocationSpecies.rowCount() == 0:
            html = html + ("<td>" + "None" + "</td>")

        else:

            # loopthrough the species listed in lstNewLifeSpecies
            for r in range(self.tblNewLocationSpecies.rowCount()):

                html = html + ("<td>" + self.tblNewLocationSpecies.item(
                    r, 1).text() + " (" + self.tblNewLocationSpecies.item(
                        r, 0).text() + ")" + "</td>")

                if R == 2:
                    html = html + ("</tr>" "<tr>")
                    R = 0

                R = R + 1

            html = html + ("</tr>" + "</table>")

        html = html + ("<font size>" + "</body>" + "</html>")

        QApplication.restoreOverrideCursor()

        return (html)

    def setDateFilter(self):
        # get location name and type from focus widget. Varies for widgets.
        if self.focusWidget().objectName() == "lstDates":
            date = self.focusWidget().currentItem().text()
            self.mdiParent.setDateFilter(date)

        if self.focusWidget().objectName() == "tblNewYearSpecies":
            date = self.focusWidget().item(self.focusWidget().currentRow(),
                                           0).text()
            startDate = date + "-01-01"
            endDate = date + "-12-31"
            self.mdiParent.setDateFilter(startDate, endDate)

        if self.focusWidget().objectName() == "tblNewMonthSpecies":
            month = self.focusWidget().item(self.focusWidget().currentRow(),
                                            0).text()
            self.mdiParent.setSeasonalRangeFilter(month)

    def setFirstDateFilter(self):
        # get location name and type from focus widget. Varies for tables.
        if self.focusWidget().objectName() == "tblSpecies":
            date = self.focusWidget().item(self.focusWidget().currentRow(),
                                           2).text()
            self.mdiParent.setDateFilter(date)

    def setLastDateFilter(self):
        # get location name and type from focus widget. Varies for tables.
        if self.focusWidget().objectName() == "tblSpecies":
            date = self.focusWidget().item(self.focusWidget().currentRow(),
                                           3).text()
            self.mdiParent.setDateFilter(date)

    def setLocationFilter(self):

        # get location name and type from focus widget. Varies for tables.
        if self.focusWidget().objectName() == "tblNewCountrySpecies":
            country = self.focusWidget().item(self.focusWidget().currentRow(),
                                              0).text()
            self.mdiParent.setCountryFilter(country)

        if self.focusWidget().objectName() == "tblNewStateSpecies":
            state = self.focusWidget().item(self.focusWidget().currentRow(),
                                            0).text()
            self.mdiParent.setStateFilter(state)

        if self.focusWidget().objectName() == "tblNewCountySpecies":
            county = self.focusWidget().item(self.focusWidget().currentRow(),
                                             0).text()
            self.mdiParent.setCountyFilter(county)

        if self.focusWidget().objectName() == "tblNewLocationSpecies":
            location = self.focusWidget().item(self.focusWidget().currentRow(),
                                               0).text()
            self.mdiParent.setLocationFilter(location)

        if self.focusWidget().objectName() == "lstLocations":
            location = self.focusWidget().currentItem().text()
            self.mdiParent.setLocationFilter(location)

    def setSpeciesFilter(self):

        # get species name from focus widget. Getting the species name is different for tables than for lists.
        if self.focusWidget().objectName() in ([
                "tblSpecies", "tblNewYearSpecies", "tblNewMonthSpecies",
                "tblNewCountrySpecies", "tblNewStateSpecies",
                "tblNewCountySpecies", "tblNewLocationSpecies"
        ]):
            species = self.focusWidget().item(self.focusWidget().currentRow(),
                                              1).text()

        if self.focusWidget().objectName() in ([
                "lstSpecies", "lstLocationSpecies", "lstLocationUniqueSpecies",
                "lstNewLifeSpecies"
        ]):
            species = self.focusWidget().currentItem().text()

        self.mdiParent.setSpeciesFilter(species)

    def resizeEvent(self, event):
        #routine to handle events on objects, like clicks, lost focus, gained forcus, etc.
        self.resized.emit()
        return super(self.__class__, self).resizeEvent(event)

    def resizeMe(self):

        windowWidth = self.frameGeometry().width()
        windowHeight = self.frameGeometry().height()
        self.scrollArea.setGeometry(5, 27, windowWidth - 10, windowHeight - 35)
        self.FillMap()

    def scaleMe(self):

        scaleFactor = self.mdiParent.scaleFactor
        windowWidth = 1100 * scaleFactor
        windowHeight = 625 * scaleFactor
        self.resize(windowWidth, windowHeight)

        fontSize = self.mdiParent.fontSize
        scaleFactor = self.mdiParent.scaleFactor
        #scale the font for all widgets in window
        for w in self.scrollArea.children():
            try:
                w.setFont(QFont("Helvetica", fontSize))
            except:
                pass

        self.lblLocation.setFont(QFont("Helvetica", floor(fontSize * 1.4)))
        self.lblLocation.setStyleSheet("QLabel { font: bold }")
        self.lblDateRange.setFont(QFont("Helvetica", floor(fontSize * 1.2)))
        self.lblDateRange.setStyleSheet("QLabel { font: bold }")
        self.lblDetails.setFont(QFont("Helvetica", floor(fontSize * 1.2)))
        self.lblDetails.setStyleSheet("QLabel { font: bold }")

        metrics = self.tblSpecies.fontMetrics()
        textHeight = metrics.boundingRect("A").height()
        textWidth = metrics.boundingRect("Dummy Country").width()

        for t in ([
                self.tblNewYearSpecies, self.tblNewMonthSpecies,
                self.tblNewCountrySpecies, self.tblNewStateSpecies,
                self.tblNewCountySpecies
        ]):
            header = t.horizontalHeader()
            header.resizeSection(0, floor(1.2 * textWidth))
            for r in range(t.rowCount()):
                t.setRowHeight(r, textHeight * 1.1)

        # format tblSpecies, which is laid out differently from the other tables
        dateWidth = metrics.boundingRect("2222-22-22").width()
        header = self.tblSpecies.horizontalHeader()
        header.resizeSection(2, floor(1.5 * dateWidth))
        header.resizeSection(3, floor(1.5 * dateWidth))
        for r in range(self.tblSpecies.rowCount()):
            self.tblSpecies.setRowHeight(r, textHeight * 1.1)

        # format tblNewLocationSpecies, which needs wider location column
        header = self.tblNewLocationSpecies.horizontalHeader()
        header.resizeSection(0, floor(4 * textWidth))
        for r in range(self.tblNewLocationSpecies.rowCount()):
            t.setRowHeight(r, textHeight * 1.1)
コード例 #21
0
ファイル: code_Web.py プロジェクト: trinkner/lapwing
class Web(QMdiSubWindow, form_Web.Ui_frmWeb):

    resized = pyqtSignal()

    def __init__(self):
        super(self.__class__, self).__init__()
        self.setupUi(self)
        self.setAttribute(Qt.WA_DeleteOnClose, True)
        self.mdiParent = ""
        self.setWindowIcon(QIcon(QPixmap(1, 1)))
        self.contentType = "Web Page"
        self.resized.connect(self.resizeMe)
        self.webView = QWebEngineView(self)
        self.webView.setObjectName("webView")
        self.webView.loadFinished.connect(self.LoadFinished)
        self.webView.loadProgress.connect(self.showLoadProgress)
        self.title = ""

    def resizeEvent(self, event):
        #routine to handle events on objects, like clicks, lost focus, gained forcus, etc.
        self.resized.emit()
        return super(self.__class__, self).resizeEvent(event)

    def resizeMe(self):

        windowWidth = self.frameGeometry().width()
        windowHeight = self.frameGeometry().height()
        self.scrollArea.setGeometry(5, 27, windowWidth - 10, windowHeight - 35)
        self.webView.setGeometry(5, 27, windowWidth - 10, windowHeight - 35)
        if self.contentType == "Map":
            self.webView.adjustSize()
            self.LoadLocationsMap(self.filter)

    def html(self):

        #         QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

        html = """
            <!DOCTYPE html>
            <html>
            <head>
            </head>
            <body>
            """

        myPixmap = self.webView.grab()
        myPixmap = myPixmap.scaledToWidth(600, Qt.SmoothTransformation)

        myByteArray = QByteArray()
        myBuffer = QBuffer(myByteArray)
        myBuffer.open(QIODevice.WriteOnly)
        myPixmap.save(myBuffer, "PNG")

        encodedImage = base64.b64encode(myByteArray)

        html = html + ("""
        <img src="data:image/png;base64, 
        """)

        html = html + str(encodedImage)[1:]

        html = html + ("""
            <font size>
            </body>
            </html>
            """)

        #         QApplication.restoreOverrideCursor()

        return (html)

    def scaleMe(self):

        fontSize = self.mdiParent.fontSize
        settings = QWebEngineSettings.globalSettings()
        settings.setFontSize(QWebEngineSettings.DefaultFontSize,
                             floor(fontSize * 1.6))

        scaleFactor = self.mdiParent.scaleFactor
        windowWidth = 800 * scaleFactor
        windowHeight = 580 * scaleFactor
        self.resize(windowWidth, windowHeight)

    def loadAboutYearbird(self):

        self.title = "About Yearbird"

        self.contentType = "About"

        html = """

            <!DOCTYPE html>
            <html>
            <head>
            <title>About Yearbird</title>
            <meta charset="utf-8">
            <style>
            * {
                font-family: "Times New Roman", Times, serif;
                }
            </style>
            </head>
            <body>
            <h1>
            Yearbird
            </h1>
            """

        html = html + "<h3>Version: " + self.mdiParent.versionNumber + "</h3>"
        html = html + "<h3>Date: " + self.mdiParent.versionDate + "</h3>"

        html = html + """
            <font size='4'>            
            <b>
            Yearbird is a free, open-source application to analyze personal eBird sightings. 
            <br><br>
            Created by Richard Trinkner.             
            </b>
            <h3>
            Licenses
            </h3>
            <p>
            <ul>
            <li>
            Yearbird is licensed under the GNU General Public License, version 3.
            </li>
            <li>
            PyQt, by Riverbank Computing, is licensed under the GNU General Public License.
            </li>
            <li>
            Map base layers are retrieved from Google.
            </li>            
            <li>
            Map layers that include points and location labels are generated using OpenLayers. OpenLayers is free, Open Source JavaScript, released under the 2-clause BSD License (also known as the FreeBSD).
            </li>
            <li>
            PyInstaller, by the PyInstaller Development Team, Giovanni Bajo and McMillan Enterprise, is licensed under the GPL General Public License.
            </li>
            </ul>
            </font size>
            </body>
            </html>        
            """

        self.webView.setHtml(html)

        self.setWindowTitle("About Yearbird")

        return (True)

    def LoadWebPage(self, url):
        #         QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
        self.webView.load(QUrl(url))
        self.resizeMe()
        self.scaleMe()

    def LoadFinished(self):
        #         QApplication.restoreOverrideCursor()
        return ()

    def LoadLocationsMap(self, filter):

        self.title = "Location Map"

        coordinatesDict = defaultdict()
        mapWidth = self.frameGeometry().width() - 10
        mapHeight = self.frameGeometry().height() - 35
        self.scrollArea.setGeometry(5, 27, mapWidth + 2, mapHeight + 2)
        self.webView.setGeometry(5, 27, mapWidth + 2, mapHeight + 2)
        self.contentType = "Map"
        self.filter = filter

        locations = self.mdiParent.db.GetLocations(filter)

        if len(locations) == 0:
            return (False)

        for l in locations:
            coordinates = self.mdiParent.db.GetLocationCoordinates(l)
            coordinatesDict[l] = coordinates

        thisMap = code_MapHtml.MapHtml()
        thisMap.mapHeight = mapHeight
        thisMap.mapWidth = mapWidth
        thisMap.coordinatesDict = coordinatesDict

        html = thisMap.html()

        self.webView.setHtml(html)

        # set window title to descriptive map name

        locationName = filter.getLocationName(
        )  # str   name of region or location  or ""
        locationType = filter.getLocationType()
        startDate = filter.getStartDate()  # str   format yyyy-mm-dd  or ""
        endDate = filter.getEndDate()  # str   format yyyy-mm-dd  or ""
        startSeasonalMonth = filter.getStartSeasonalMonth()  # str   format mm
        startSeasonalDay = filter.getStartSeasonalDay()  # str   format dd
        endSeasonalMonth = filter.getEndSeasonalMonth()  # str   format  dd
        endSeasonalDay = filter.getEndSeasonalDay()  # str   format dd
        speciesName = filter.getSpeciesName()  # str   speciesName
        family = filter.getFamily()  # str family name

        # set main location label, using "All Locations" if none others are selected

        windowTitle = speciesName

        if locationName != "":
            if locationType == "Country":
                locationName = self.mdiParent.db.GetCountryName(locationName)
            if locationType == "State":
                locationName = self.mdiParent.db.GetStateName(locationName)
            windowTitle = windowTitle + "; " + locationName

        if startDate != "":
            dateTitle = startDate + " to " + endDate
            if startDate == endDate:
                dateTitle = startDate
            windowTitle = windowTitle + "; " + dateTitle

        # set main seasonal range label, if specified
        if not ((startSeasonalMonth == "") or (endSeasonalMonth == "")):
            monthRange = [
                "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
                "Oct", "Nov", "Dec"
            ]
            rangeTitle = monthRange[
                int(startSeasonalMonth) -
                1] + "-" + startSeasonalDay + " to " + monthRange[
                    int(endSeasonalMonth) - 1] + "-" + endSeasonalDay
            windowTitle = windowTitle + "; " + rangeTitle

        if family != "":
            family = family[0:family.index("(") - 1]
            windowTitle = windowTitle + "; " + family

        if windowTitle == "":
            windowTitle = "All species, locations, dates and families"

        #remove leading "; " if needed
        if windowTitle[0:2] == "; ":
            windowTitle = windowTitle[2:]

        # add location count to window title
        windowTitle = "Map: " + windowTitle + " (" + str(
            len(coordinatesDict.keys())) + ")"

        self.setWindowTitle(windowTitle)
        self.title = windowTitle

        icon = QIcon()
        icon.addPixmap(QPixmap(":/icon_map.png"), QIcon.Normal, QIcon.Off)
        self.setWindowIcon(icon)

        return (True)

    def loadChoroplethUSStates(self, filter):

        from copy import deepcopy
        import folium
        from branca.colormap import LinearColormap

        self.title = "US States Choropleth"

        self.filter = deepcopy(filter)

        # find states in filtered sightings
        stateDict = defaultdict()

        minimalSightingList = self.mdiParent.db.GetMinimalFilteredSightingsList(
            filter)

        for s in minimalSightingList:

            # Consider only full species, not slash or spuh or hybrid entries
            commonName = s["commonName"]
            if "/" not in commonName and "sp." not in commonName and " x " not in commonName:

                if self.mdiParent.db.TestSighting(s, filter):

                    if s["state"][3:5] not in stateDict.keys():
                        stateDict[s["state"][3:5]] = [s]
                    else:
                        stateDict[s["state"][3:5]].append(s)

        # check if no sightings were found. Return false if none found. Abort and display message.
        if len(stateDict) == 0:
            return (False)

        stateTotals = defaultdict()
        largestTotal = 0
        for state in stateDict.keys():
            stateSpecies = set()
            for s in stateDict[state]:
                stateSpecies.add(s["commonName"])
            stateTotals[state] = len(stateSpecies)
            if len(stateSpecies) > largestTotal:
                largestTotal = len(stateSpecies)

        # Load the shape of the zone (US counties)
        geo_file = self.mdiParent.db.state_geo

        #add the state values to the geojson so we can access them for tooltips
        for f in geo_file["features"]:
            if f["id"] in stateTotals.keys():
                f["properties"]["speciesTotal"] = stateTotals[f["id"]]
            else:
                f["properties"]["speciesTotal"] = 0
                stateTotals[f["id"]] = 0

        #create color range for map, using the maximum state value found above
        colormap = LinearColormap(
            colors=[(255, 240, 227), (255, 119, 0)],
            index=[0, round(largestTotal * .75)],
            vmin=0,
            vmax=largestTotal,
        )

        # Initialize the folium map
        state_map = folium.Map(location=[39.5, -98.3], zoom_start=4)

        # Configure the chloropleth layer and add to map
        folium.GeoJson(geo_file,
                       style_function=lambda feature: {
                           'fillColor':
                           'rgb(240, 240, 240)' if stateTotals[feature['id']]
                           == 0 else colormap(stateTotals[feature['id']]),
                           'color':
                           'black',
                           'weight':
                           .2,
                           'fillOpacity':
                           .8,
                       },
                       tooltip=folium.features.GeoJsonTooltip(
                           fields=['name', 'speciesTotal'],
                           aliases=["State", "Species"])).add_to(state_map)

        # make the layer control box visible
        folium.LayerControl().add_to(state_map)

        # get the html string from the map
        html = state_map.get_root().render()

        self.webView.setHtml(html)

        return (True)

    def loadChoroplethUSCounties(self, filter):

        from copy import deepcopy
        import folium
        from branca.colormap import LinearColormap

        self.title = "US Counties Choropleth"

        self.filter = deepcopy(filter)

        # find states in filtered sightings
        countyDict = defaultdict()

        minimalSightingList = self.mdiParent.db.GetMinimalFilteredSightingsList(
            filter)

        for s in minimalSightingList:

            # only count US sightings since we're only showing the US choropleth
            if s["country"] == "US" and s["state"] not in ["US-HI", "US-AK"]:

                #only use sightings that have a county code assigned to them
                # some US sightings won't have them, such as if a checklist is for
                # an entire state, not localized down to a location or county
                if "countyCode" in s.keys():

                    # Consider only full species, not slash or spuh or hybrid entries
                    commonName = s["commonName"]
                    if "/" not in commonName and "sp." not in commonName and " x " not in commonName:

                        if self.mdiParent.db.TestSighting(s, filter):

                            if s["countyCode"] not in countyDict.keys():
                                countyDict[s["countyCode"]] = [s]
                            else:
                                countyDict[s["countyCode"]].append(s)

        # check if no sightings were found. Return false if none found. Abort and display message.
        if len(countyDict) == 0:
            return (False)

        countyTotals = defaultdict()
        largestTotal = 0
        for county in countyDict.keys():
            countySpecies = set()
            for s in countyDict[county]:
                countySpecies.add(s["commonName"])
            countyTotals[county] = len(countySpecies)
            if len(countySpecies) > largestTotal:
                largestTotal = len(countySpecies)

        # Load the shape of the zone (US counties)
        geo_file = self.mdiParent.db.county_geo

        #add the county values to the geojson so we can access them for tooltips
        for f in geo_file["features"]:
            if f["id"] in countyTotals.keys():
                f["properties"]["speciesTotal"] = countyTotals[f["id"]]
            else:
                f["properties"]["speciesTotal"] = 0
                countyTotals[f["id"]] = 0

        #create color range for map, using the maximum state value found above
        colormap = LinearColormap(
            colors=[(255, 240, 227), (255, 119, 0)],
            index=[0, round(largestTotal * .75)],
            vmin=0,
            vmax=largestTotal,
        )

        # Initialize the folium map
        county_map = folium.Map(location=[39.5, -98.3], zoom_start=4)

        # Configure the chloropleth layer and add to map
        folium.GeoJson(geo_file,
                       style_function=lambda feature: {
                           'fillColor':
                           'rgb(240, 240, 240)' if countyTotals[feature['id']]
                           == 0 else colormap(countyTotals[feature['id']]),
                           'color':
                           'black',
                           'weight':
                           1,
                           'fillOpacity':
                           .8,
                           'nan_fill_color':
                           'white'
                       },
                       tooltip=folium.features.GeoJsonTooltip(
                           fields=['name', 'state', 'speciesTotal'],
                           aliases=["County", "State",
                                    "Species"])).add_to(county_map)

        # make the layer control box visible
        folium.LayerControl().add_to(county_map)

        # get the html string from the map
        html = county_map.get_root().render()

        self.webView.setHtml(html)

        return (True)

    def loadChoroplethWorldCountries(self, filter):

        from copy import deepcopy
        import folium
        from branca.colormap import LinearColormap

        self.title = "World Choropleth"

        self.filter = deepcopy(filter)

        # find states in filtered sightings
        countryDict = defaultdict()

        minimalSightingList = self.mdiParent.db.GetMinimalFilteredSightingsList(
            filter)

        for s in minimalSightingList:

            # Consider only full species, not slash or spuh or hybrid entries
            commonName = s["commonName"]
            if "/" not in commonName and "sp." not in commonName and " x " not in commonName:

                if self.mdiParent.db.TestSighting(s, filter):

                    if s["country"] not in countryDict.keys():
                        countryDict[s["country"]] = [s]
                    else:
                        countryDict[s["country"]].append(s)

        # check if no sightings were found. Return false if none found. Abort and display message.
        if len(countryDict) == 0:
            return (False)

        countryTotals = defaultdict()
        largestTotal = 0
        for country in countryDict.keys():
            countrySpecies = set()
            for s in countryDict[country]:
                countrySpecies.add(s["commonName"])
            countryTotals[country] = len(countrySpecies)
            if len(countrySpecies) > largestTotal:
                largestTotal = len(countrySpecies)

        # Load the shape of the zone (US counties)
        geo_file = self.mdiParent.db.country_geo

        #add the country values to the geojson so we can access them for tooltips
        for f in geo_file["features"]:
            if f["id"] in countryTotals.keys():
                f["properties"]["speciesTotal"] = countryTotals[f["id"]]
            else:
                f["properties"]["speciesTotal"] = 0
                countryTotals[f["id"]] = 0

        #create color range for map, using the maximum country value found above
        colormap = LinearColormap(
            colors=[(255, 240, 227), (255, 119, 0)],
            index=[0, round(largestTotal * .75)],
            vmin=0,
            vmax=largestTotal,
        )

        # Initialize the folium map
        choro_map = folium.Map(location=[1, 1], zoom_start=1)

        # Configure the chloropleth layer and add to map
        folium.GeoJson(geo_file,
                       style_function=lambda feature: {
                           'fillColor':
                           'rgb(240, 240, 240)' if countryTotals[feature['id']]
                           == 0 else colormap(countryTotals[feature['id']]),
                           'color':
                           'black',
                           'weight':
                           1,
                           'fillOpacity':
                           .8,
                           'nan_fill_color':
                           'white'
                       },
                       tooltip=folium.features.GeoJsonTooltip(
                           fields=['name', 'speciesTotal'],
                           aliases=["Country", "Species"])).add_to(choro_map)

        # make the layer control box visible
        folium.LayerControl().add_to(choro_map)

        # get the html string from the map
        html = choro_map.get_root().render()

        self.webView.setHtml(html)

        return (True)

    def loadChoroplethWorldSubregion1(self, filter):

        return ()

    def showLoadProgress(self, percent):

        if percent < 100:
            self.setWindowTitle(self.title + ": " + str(percent) + "%")
        else:
            self.setWindowTitle(self.title)
コード例 #22
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalFrame = QtWidgets.QFrame(self.centralwidget)
        self.verticalFrame.setGeometry(QtCore.QRect(30, 30, 211, 501))
        self.verticalFrame.setAutoFillBackground(True)
        self.verticalFrame.setFrameShape(QtWidgets.QFrame.WinPanel)
        self.verticalFrame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.verticalFrame.setObjectName("verticalFrame")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalFrame)
        self.verticalLayout.setObjectName("verticalLayout")
        spacerItem = QtWidgets.QSpacerItem(20, 40,
                                           QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem)
        self.comboBox = QtWidgets.QComboBox(self.verticalFrame)
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItems(["Traffic Volume", "Traffic Incidents"])
        self.verticalLayout.addWidget(self.comboBox)
        self.comboBox_2 = QtWidgets.QComboBox(self.verticalFrame)
        self.comboBox_2.setObjectName("comboBox_2")
        self.comboBox_2.addItems(["2016", "2017", "2018"])
        self.verticalLayout.addWidget(self.comboBox_2)
        spacerItem1 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem1)
        self.pushButton_1 = QtWidgets.QPushButton(self.verticalFrame)
        self.pushButton_1.setObjectName("pushButton_1")
        self.pushButton_1.clicked.connect(lambda: self.b1Callback())
        self.verticalLayout.addWidget(self.pushButton_1)
        spacerItem2 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem2)
        self.pushButton_2 = QtWidgets.QPushButton(self.verticalFrame)
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_2.clicked.connect(lambda: self.b2Callback())
        self.verticalLayout.addWidget(self.pushButton_2)
        spacerItem3 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem3)
        self.pushButton_3 = QtWidgets.QPushButton(self.verticalFrame)
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_3.clicked.connect(lambda: self.b3Callback())
        self.verticalLayout.addWidget(self.pushButton_3)
        spacerItem4 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem4)
        self.pushButton_4 = QtWidgets.QPushButton(self.verticalFrame)
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_4.clicked.connect(lambda: self.b4Callback())
        self.verticalLayout.addWidget(self.pushButton_4)
        spacerItem5 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Fixed)
        self.verticalLayout.addItem(spacerItem5)
        self.label = QtWidgets.QLabel(self.verticalFrame)
        self.label.setStyleSheet("QLabel {background-color:rgb(255, 0, 0)}")
        self.label.setFrameShape(QtWidgets.QFrame.Box)
        self.label.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.stackedWidget = QtWidgets.QStackedWidget(self.centralwidget)
        self.stackedWidget.setGeometry(QtCore.QRect(270, 30, 491, 521))
        self.stackedWidget.setFrameShape(QtWidgets.QFrame.Panel)
        self.stackedWidget.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.stackedWidget.setObjectName("stackedWidget")
        self.page = QtWidgets.QWidget()
        self.page.setObjectName("page")
        self.widget = QtWidgets.QWidget(self.page)
        self.widget.setGeometry(QtCore.QRect(0, 0, 490, 520))
        self.widget.setObjectName("widget")
        self.stackedWidget.addWidget(self.page)
        #pg.setConfigOptions(foreground='d',background='k')
        self.page_2 = QtWidgets.QWidget()
        self.page_2.setObjectName("page_2")
        self.tableWidget = QtWidgets.QTableWidget(self.page_2)
        self.tableWidget.setGeometry(QtCore.QRect(0, 0, 490, 520))
        self.tableWidget.setSizeAdjustPolicy(
            QtWidgets.QAbstractScrollArea.AdjustToContents)
        self.tableWidget.setObjectName("tableWidget")
        self.tableWidget.setColumnCount(3)
        self.tableWidget.setRowCount(4)
        self.stackedWidget.addWidget(self.page_2)
        self.page_3 = QtWidgets.QWidget()
        self.page_3.setObjectName("page_3")
        self.webView = QWebEngineView(self.page_3)

        self.webView.setGeometry(QtCore.QRect(0, 0, 490, 520))
        self.webView.load(QUrl("file:///C:/traffic_2016.html"))
        self.webView.show()
        self.webView.setObjectName("webView")
        self.stackedWidget.addWidget(self.page_3)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.gw = pg.GraphicsLayoutWidget(parent=self.page)
        self.gw.resize(490, 520)
        self.plot = self.gw.addPlot(title='Dummy',
                                    labels={
                                        'left': 'Y',
                                        'bottom': 'X'
                                    })
        self.retranslateUi(MainWindow)
        self.comboBox.setCurrentIndex(0)
        self.stackedWidget.setCurrentIndex(1)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_1.setText(_translate("MainWindow", "Read"))
        self.pushButton_2.setText(_translate("MainWindow", "Sort"))
        self.pushButton_3.setText(_translate("MainWindow", "Analyze"))
        self.pushButton_4.setText(_translate("MainWindow", "Map"))
        self.label.setText(_translate("MainWindow", "TextLabel"))

    def b1Callback(self):
        try:
            self.pending()
            self.stackedWidget.setCurrentIndex(1)
            self.tableWidget.clear()
            choice1 = self.comboBox.currentText()
            choice2 = self.comboBox_2.currentText()
            data = {}
            if 'olum' in choice1:
                if '16' in choice2:
                    data = d_v_16
                elif '17' in choice2:
                    data = d_v_17
                else:
                    data = d_v_18
            else:
                if '16' in choice2:
                    data = d_a_16
                elif '17' in choice2:
                    data = d_a_17
                else:
                    data = d_a_18
            self.populate_table(data)
            self.success('Collection read')
        except:
            self.failure('Collection not read')

    def b2Callback(self):
        try:
            self.pending()
            self.stackedWidget.setCurrentIndex(1)
            self.tableWidget.clear()
            choice1 = self.comboBox.currentText()
            choice2 = self.comboBox_2.currentText()
            data = {}
            if 'olum' in choice1:
                if '16' in choice2:
                    data = d_v_16_s
                elif '17' in choice2:
                    data = d_v_17_s
                else:
                    data = d_v_18_s
            else:
                if '16' in choice2:
                    data = d_a_16_s
                elif '17' in choice2:
                    data = d_a_17_s
                else:
                    data = d_a_18_s
            self.populate_table(data)
            self.success('Data sorted')
        except:
            self.failure('Data not sorted')

    def b3Callback(self):
        try:
            self.pending()
            self.stackedWidget.setCurrentIndex(0)
            self.plot.clear()
            year = [2016, 2017, 2018]
            title = ''
            typ = ''
            data = [0, 0, 0]
            choice1 = self.comboBox.currentText()
            if 'olum' in choice1:
                title = 'Traffic Flow plot'
                data = [m_v_16, m_v_17, m_v_18]
                typ = 'Highest traffic volume'
            else:
                title = 'Traffic Incident plot'
                data = [m_a_16, m_a_17, m_a_18]
                typ = 'Highest incident concentration'
            self.plot.setLabels(title=title, left=typ, bottom='Year')
            self.curve = self.plot.plot(year, data)
            self.success('Data plotted')
        except:
            self.failure('Data not plotted')

    def b4Callback(self):
        try:
            self.pending()
            self.stackedWidget.setCurrentIndex(2)
            self.tableWidget.clear()
            choice1 = self.comboBox.currentText()
            choice2 = self.comboBox_2.currentText()
            link_name = ''
            if 'olum' in choice1:
                if '16' in choice2:
                    link_name = "file:///C:/traffic_2016.html"
                elif '17' in choice2:
                    link_name = "file:///C:/traffic_2017.html"
                else:
                    link_name = "file:///C:/traffic_2018.html"
            else:
                if '16' in choice2:
                    link_name = "file:///C:/incidents_2016.html"
                elif '17' in choice2:
                    link_name = "file:///C:/incidents_2017.html"
                else:
                    link_name = "file:///C:/incidents_2018.html"
            self.webView.load(QUrl(link_name))
            self.success('Map displayed')
        except:
            self.failure('Map not displayed')

    def populate_table(self, struct):
        self.tableWidget.clear()
        col = row = 0
        headers = []
        for key in struct.keys():
            headers.append(key)
            row = len(struct[key])
            col += 1
        self.tableWidget.setHorizontalHeaderLabels(headers)
        self.tableWidget.setColumnCount(col)
        self.tableWidget.setRowCount(row)
        for n, key in enumerate(struct):
            for m, item in enumerate(struct[key]):
                newitem = QtWidgets.QTableWidgetItem(str(item))
                self.tableWidget.setItem(m, n, newitem)

    def pending(self):
        self.label.setText('Executing...')
        self.label.setStyleSheet("QLabel {background-color:yellow}")

    def success(self, text):
        self.label.setText(text)
        self.label.setStyleSheet("QLabel {background-color:green}")

    def failure(self, text):
        self.label.setText(text)
        self.label.setStyleSheet("QLabel {background-color:red}")
コード例 #23
0
ファイル: browser.py プロジェクト: rda0/web-greeter
class Browser(Application):
    # pylint: disable=too-many-instance-attributes
    """The main browser"""
    url_scheme: QWebEngineUrlScheme
    bridge_initialized: bool
    dev_view: QWebEngineView
    dev_page: WebPage
    qdock: QDockWidget

    def __init__(self):
        super().__init__()
        self.init()
        # self.load()

    def init(self):
        """Initialize browser"""
        logger.debug("Initializing Browser Window")

        if web_greeter_config["config"]["greeter"]["debug_mode"]:
            os.environ['QTWEBENGINE_REMOTE_DEBUGGING'] = '12345'

        url_scheme = "web-greeter"
        self.url_scheme = QWebEngineUrlScheme(url_scheme.encode())
        self.url_scheme.setDefaultPort(QWebEngineUrlScheme.PortUnspecified)
        self.url_scheme.setFlags(QWebEngineUrlScheme.SecureScheme
                                 or QWebEngineUrlScheme.LocalScheme
                                 or QWebEngineUrlScheme.LocalAccessAllowed)
        QWebEngineUrlScheme.registerScheme(self.url_scheme)

        self.profile = QWebEngineProfile.defaultProfile()
        self.interceptor = QtUrlRequestInterceptor(url_scheme)
        self.url_scheme_handler = QtUrlSchemeHandler()

        self.view = QWebEngineView(parent=self.window)
        self.page = WebPage()
        self.view.setPage(self.page)
        self.page.setObjectName("WebG Page")
        self.view.setObjectName("WebG View")

        self.channel = QWebChannel(self.page)
        self.bridge_initialized = False

        self.profile.installUrlSchemeHandler(url_scheme.encode(),
                                             self.url_scheme_handler)

        self._initialize_page()

        if web_greeter_config["config"]["greeter"]["debug_mode"]:
            self._initialize_devtools()
        else:
            self.view.setContextMenuPolicy(Qt.PreventContextMenu)

        self._init_actions()
        if web_greeter_config["app"]["frame"]:
            self._init_menu_bar()
        else:
            self.window.setWindowFlags(self.window.windowFlags()
                                       | Qt.FramelessWindowHint)

        if web_greeter_config["config"]["greeter"]["secure_mode"]:
            if hasattr(QWebEngineProfile, "setUrlRequestInterceptor"):
                self.profile.setUrlRequestInterceptor(self.interceptor)
            else:  # Older Qt5 versions
                self.profile.setRequestInterceptor(self.interceptor)

        self.page.setBackgroundColor(QColor(0, 0, 0))
        self.window.setStyleSheet("""QMainWindow, QWebEngineView {
	                                background: #000000;
                                 }""")

        self.window.setCentralWidget(self.view)

        logger.debug("Browser Window created")

    def load(self):
        """Load theme and initialize bridge"""
        self.load_theme()

        self.bridge_objects = (self.greeter, self.greeter_config,
                               self.theme_utils)
        self.initialize_bridge_objects()
        self.load_script(':/_greeter/js/bundle.js', 'Web Greeter Bundle')

    def _initialize_devtools(self):
        self.dev_view = QWebEngineView(parent=self.window)
        self.dev_page = WebPage()
        self.dev_view.setPage(self.dev_page)
        self.page.setDevToolsPage(self.dev_page)
        self.dev_view.setObjectName("Devtools view")
        self.dev_page.setObjectName("Devtools page")

        self.dev_page.windowCloseRequested.connect(
            lambda: self.toggle_devtools_value(False))

        inspect_element_action = self.page.action(self.page.InspectElement)
        inspect_element_action.triggered.connect(
            lambda: self.toggle_devtools_value(True))

        self.qdock = QDockWidget()
        self.qdock.setWidget(self.dev_view)
        self.qdock.setFeatures(QDockWidget.DockWidgetMovable
                               or QDockWidget.DockWidgetClosable)

        self.window.addDockWidget(Qt.RightDockWidgetArea, self.qdock)
        self.qdock.hide()
        logger.debug("DevTools initialized")

    def toggle_devtools(self):
        """Toggle devtools"""
        if not web_greeter_config["config"]["greeter"]["debug_mode"]:
            return
        self.toggle_devtools_value(not self.qdock.isVisible())

    def toggle_devtools_value(self, value: bool):
        """Toggle devtools by value"""
        if not web_greeter_config["config"]["greeter"]["debug_mode"]:
            return

        if value:
            self.qdock.show()
            self.dev_view.setFocus()
        else:
            self.qdock.hide()
            self.view.setFocus()

    def _init_actions(self):
        """Init browser actions"""
        self.exit_action = QAction(QIcon("exit.png"), "&Quit", self.window)
        self.exit_action.setShortcut("Ctrl+Q")
        self.exit_action.setStatusTip("Exit application")
        self.exit_action.triggered.connect(qApp.quit)

        self.toggle_dev_action = QAction("Toggle Developer Tools", self.window)
        self.toggle_dev_action.setShortcut("Ctrl+Shift+I")
        self.toggle_dev_action.triggered.connect(self.toggle_devtools)

        self.fullscreen_action = QAction("Toggle Fullscreen", self.window)
        self.fullscreen_action.setShortcut("F11")
        self.fullscreen_action.triggered.connect(
            lambda: self.toggle_fullscreen(not self.window.isFullScreen()))

        self.inc_zoom_action = QAction("Zoom In", self.window)
        self.inc_zoom_action.setShortcut("Ctrl++")
        self.inc_zoom_action.triggered.connect(self._inc_zoom)
        self.dec_zoom_action = QAction("Zoom Out", self.window)
        self.dec_zoom_action.setShortcut("Ctrl+-")
        self.dec_zoom_action.triggered.connect(self._dec_zoom)
        self.reset_zoom_action = QAction("Actual Size", self.window)
        self.reset_zoom_action.setShortcut("Ctrl+0")
        self.reset_zoom_action.triggered.connect(self._reset_zoom)

        self.window.addAction(self.exit_action)
        self.window.addAction(self.toggle_dev_action)
        self.window.addAction(self.fullscreen_action)
        self.window.addAction(self.inc_zoom_action)
        self.window.addAction(self.dec_zoom_action)
        self.window.addAction(self.reset_zoom_action)

    def _inc_zoom(self):
        if self.view.hasFocus():
            self.page.increaseZoom()
        else:
            self.dev_page.increaseZoom()

    def _dec_zoom(self):
        if self.view.hasFocus():
            self.page.decreaseZoom()
        else:
            self.dev_page.decreaseZoom()

    def _reset_zoom(self):
        if self.view.hasFocus():
            self.page.setZoomFactor(1)
        else:
            self.dev_page.setZoomFactor(1)

    def _init_menu_bar(self):
        minimize_action = QAction("Minimize", self.window)
        minimize_action.setShortcut("Ctrl+M")
        minimize_action.triggered.connect(self.window.showMinimized)
        close_action = QAction("Close", self.window)
        close_action.setShortcut("Ctrl+W")
        close_action.triggered.connect(self.window.close)

        self.page.action(
            self.page.ReloadAndBypassCache).setText("Force Reload")

        self.page.fullScreenRequested.connect(self.accept_fullscreen)

        self.menu_bar = QMenuBar()

        file_menu = self.menu_bar.addMenu("&File")
        file_menu.addAction(self.exit_action)

        edit_menu = self.menu_bar.addMenu("&Edit")
        edit_menu.addAction(self.page.action(self.page.Undo))
        edit_menu.addAction(self.page.action(self.page.Redo))
        edit_menu.addSeparator()
        edit_menu.addAction(self.page.action(self.page.Cut))
        edit_menu.addAction(self.page.action(self.page.Copy))
        edit_menu.addAction(self.page.action(self.page.Paste))
        edit_menu.addSeparator()
        edit_menu.addAction(self.page.action(self.page.SelectAll))

        view_menu = self.menu_bar.addMenu("&View")
        view_menu.addAction(self.page.action(self.page.Reload))
        view_menu.addAction(self.page.action(self.page.ReloadAndBypassCache))
        view_menu.addAction(self.toggle_dev_action)
        view_menu.addSeparator()
        view_menu.addAction(self.reset_zoom_action)
        view_menu.addAction(self.inc_zoom_action)
        view_menu.addAction(self.dec_zoom_action)
        view_menu.addSeparator()
        view_menu.addAction(self.fullscreen_action)

        window_menu = self.menu_bar.addMenu("&Window")
        window_menu.addAction(minimize_action)
        window_menu.addAction(close_action)

        # help_menu = menu_bar.addMenu("&Help")

        self.window.setMenuBar(self.menu_bar)

    def accept_fullscreen(self, request):
        """Accepts fullscreen requests"""
        if web_greeter_config["config"]["greeter"]["debug_mode"]:
            request.reject()
            return
        if request.toggleOn():
            self.toggle_fullscreen(True)
        else:
            self.toggle_fullscreen(False)
        request.accept()

    def toggle_fullscreen(self, value: bool):
        """Toggle fullscreen"""
        if not web_greeter_config["config"]["greeter"]["debug_mode"]:
            return
        if value:
            state = self.states["FULLSCREEN"]
            self.window.setWindowFlags(self.window.windowFlags()
                                       or Qt.FramelessWindowHint)
            self.menu_bar.setParent(None)
            self.window.setMenuBar(None)
        else:
            state = self.states["NORMAL"]
            self.window.setWindowFlags(self.window.windowFlags()
                                       or not Qt.FramelessWindowHint)
            self.window.setMenuBar(self.menu_bar)
        try:
            self.window.windowHandle().setWindowState(state)
        except (AttributeError, TypeError):
            self.window.setWindowState(state)

    def _initialize_page(self):
        page_settings = self.page.settings().globalSettings()

        if not web_greeter_config["config"]["greeter"]["secure_mode"]:
            ENABLED_SETTINGS.append('LocalContentCanAccessRemoteUrls')
        else:
            DISABLED_SETTINGS.append('LocalContentCanAccessRemoteUrls')

        for setting in DISABLED_SETTINGS:
            try:
                page_settings.setAttribute(
                    getattr(QWebEngineSettings, setting), False)
            except AttributeError:
                pass

        for setting in ENABLED_SETTINGS:
            try:
                page_settings.setAttribute(
                    getattr(QWebEngineSettings, setting), True)
            except AttributeError:
                pass

        self.page.setView(self.view)

    def load_theme(self):
        """Load theme"""
        theme = web_greeter_config["config"]["greeter"]["theme"]
        dir_t = "/usr/share/web-greeter/themes/"
        path_to_theme = os.path.join(dir_t, theme, "index.html")
        def_theme = "gruvbox"

        if theme.startswith("/"):
            path_to_theme = theme
        elif theme.__contains__(".") or theme.__contains__("/"):
            path_to_theme = os.path.join(os.getcwd(), theme)
            path_to_theme = os.path.realpath(path_to_theme)

        if not path_to_theme.endswith(".html"):
            path_to_theme = os.path.join(path_to_theme, "index.html")

        if not os.path.exists(path_to_theme):
            print("Path does not exists", path_to_theme)
            path_to_theme = os.path.join(dir_t, def_theme, "index.html")

        web_greeter_config["config"]["greeter"]["theme"] = path_to_theme

        url = QUrl(f"web-greeter://app/{path_to_theme}")
        self.page.load(url)

        logger.debug("Theme loaded")

    @staticmethod
    def _create_webengine_script(path: Url, name: str) -> QWebEngineScript:
        script = QWebEngineScript()
        script_file = QFile(path)

        # print(script_file, path)

        if script_file.open(QFile.ReadOnly):
            script_string = str(script_file.readAll(), 'utf-8')

            script.setInjectionPoint(QWebEngineScript.DocumentCreation)
            script.setName(name)
            script.setWorldId(QWebEngineScript.MainWorld)
            script.setSourceCode(script_string)
            # print(script_string)

        return script

    def _get_channel_api_script(self) -> QWebEngineScript:
        return self._create_webengine_script(':/qtwebchannel/qwebchannel.js',
                                             'QWebChannel API')

    def _init_bridge_channel(self) -> None:
        self.page.setWebChannel(self.channel)
        self.bridge_initialized = True

    def initialize_bridge_objects(self) -> None:
        """Initialize bridge objects :D"""
        if not self.bridge_initialized:
            self._init_bridge_channel()
        registered_objects = self.channel.registeredObjects()

        for obj in self.bridge_objects:
            if obj not in registered_objects:
                # pylint: disable=protected-access
                self.channel.registerObject(obj._name, obj)
                # print("Registered", obj._name)

    def load_script(self, path: Url, name: str):
        """Loads a script in page"""
        qt_api = self._get_channel_api_script()
        qt_api_source = qt_api.sourceCode()
        script = self._create_webengine_script(path, name)
        script.setSourceCode(qt_api_source + "\n" + script.sourceCode())
        self.page.scripts().insert(script)
コード例 #24
0
ファイル: YSLocRecView.py プロジェクト: piaoxue88/HWExplorer
class LocateRecognizeView(QWidget):

    def __init__(self, *args, **kwargs):
        super(LocateRecognizeView, self).__init__(*args, **kwargs)
        self.ori_image_path = None                  # 选中的原图像路径
        self.ori_label_list = []                    # 选中图像对应的文本信息, 若没有则为空
        self.res_image_list = None                  # [(定位出文本行的图像, [文本行图像])]
        self.start_flag = False                     # 当前是否正在定位识别
        self.show_diff_flag = False                 # 是否显示对比结果视图,默认为False(选中图像无对应txt文件)
        self.locate_start_timer = 0                 # 定位计时器起始时间
        self.locate_end_timer = 0                   # 定位计时器结束时间
        self.rec_start_timer = 0                    # 识别计时器起始时间
        self.rec_end_timer = 0                      # 识别计时器结束时间
        self.setStyleSheet(LRStylesheet)            # 初始化GUI样式
        self.initUi()                               # 初始化GUI布局

        self.texts_rect = []                        # 文本行图像位置

        self.dbnetThread = None                     # 初始化DBNet定位后台线程
        self.backThread = None                      # 初始化形态学定位后台线程
        self.recogBackThread = None                 # 初始化识别后台线程

    # 界面布局
    def initUi(self):

        # 内容视图, 管理所有的子视图
        self.content_view = QWidget(self)
        self.content_view.setObjectName("Content_View")
        self.content_view.setGeometry(QRect(0, 0, Sub_Win_Width, Sub_Win_Height))

        # 顶部状态栏
        self.top_state_bar = QWidget(self.content_view)
        self.top_state_bar.setObjectName("Top_State_Bar")
        self.top_state_bar.setGeometry(QRect(0, 0, Top_State_Bar_Width, Top_State_Bar_Height))
        # 选择文件按钮:
        self.choose_img_btn = QPushButton(self.top_state_bar)
        self.choose_img_btn.setGeometry(QRect(Top_State_Bar_Width / 2 - 50, 10, 100, 60))
        self.choose_img_btn.setObjectName("Choose_Img_Btn")
        self.choose_img_btn.setText("选择文件")
        self.choose_img_btn.clicked.connect(self.choose_img_file)

        # 启用DBNet按钮
        self.switch_button = SwitchButton(self.content_view)
        self.switch_button.setGeometry(QRect(680, 90, 70, 30))
        self.switch_button.setObjectName("Switch_Button")
        self.switch_label = QLabel(self.content_view)
        self.switch_label.setObjectName("Switch_Label")
        self.switch_label.setGeometry(QRect(665, 120, 100, 30))
        self.switch_label.setAlignment(Qt.AlignCenter)
        self.switch_label.setText("启用DBNet")

        # 全尺寸背景视图
        self.full_size_content_widget = QWidget(self.content_view)
        self.full_size_content_widget.setObjectName("Full_Size_Content_Widget")
        self.full_size_content_widget.setGeometry(QRect(60, 150, Locate_Show_Area_Width * 2 + 50 + 25 * 2, Locate_Show_Area_Height + 120))
        # 全尺寸webview
        self.full_size_web_view = QWebEngineView(self.full_size_content_widget)
        self.full_size_web_view.setObjectName("Full_Size_Web_View")
        self.full_size_web_view.setGeometry(QRect(20, 20, Locate_Show_Area_Width * 2 + 50 + 10, Locate_Show_Area_Height + 30))
        self.full_size_web_view.setHidden(True)  # 默认隐藏
        # 退出全尺寸按钮
        self.exit_full_button = QPushButton(self.full_size_content_widget)
        self.exit_full_button.setObjectName("Exit_Full_Button")
        self.exit_full_button.setGeometry(QRect(590, 765, 100, 40))
        self.exit_full_button.setText("退出")
        self.exit_full_button.clicked.connect(self.exit_full_size_view_mode)

        # 中间识别区域
        self.show_area_widget = QWidget(self.content_view)
        self.show_area_widget.setObjectName("Show_Area_Widget")
        self.show_area_widget.setGeometry(QRect(60, 150, Locate_Show_Area_Width * 2 + 50 + 25 * 2, Locate_Show_Area_Height + 120))

        # 左侧图像区域: 显示定位出文本行的图片
        self.ori_image_View = QLabel(self.show_area_widget)
        self.ori_image_View.setGeometry(QRect(25, 25, Locate_Show_Area_Width, Locate_Show_Area_Height))
        self.ori_image_View.setObjectName("Ori_Image_View")
        self.ori_image_View.setScaledContents(True)             # 对图像进行缩放显示
        # 中间放大按钮区域
        self.mid_circle_area = QLabel(self.show_area_widget)
        self.mid_circle_area.setObjectName("Mid_Circle_Area")
        self.mid_circle_area.setGeometry(QRect(Locate_Show_Area_Width+25, 320, 50, 50))
        self.mid_circle_area.setHidden(True)                # 默认隐藏, 显示对比视图时再显示
        # 放大按钮
        self.mid_zoom_btn = QPushButton(self.mid_circle_area)
        self.mid_zoom_btn.setObjectName("Mid_Zoom_Btn")
        self.mid_zoom_btn.setGeometry(QRect(5, 5, 40, 40))
        self.mid_zoom_btn.clicked.connect(self.show_full_size_view)

        # 右侧识别文字区域
        self.text_area_widget = QLabel(self.show_area_widget)
        self.text_area_widget.setGeometry(QRect(25 + Locate_Show_Area_Width + 50, 25, Locate_Show_Area_Width, Locate_Show_Area_Height))
        self.text_area_widget.setObjectName("Text_Area_Widget")
        # 自定义textview: 无对应标签时展示
        self.res_text_view = PaintTextView(self.text_area_widget)
        self.res_text_view.setGeometry(QRect(20, 20, Locate_Show_Area_Width - 20 * 2, Locate_Show_Area_Height - 20 * 2))
        self.res_text_view.setObjectName("Res_Text_View")
        # web界面: 有对应标签时展示
        self.diff_web_view = QWebEngineView(self.text_area_widget)
        self.diff_web_view.setObjectName("Diff_Web_View")
        self.diff_web_view.setGeometry(QRect(20, 20, Locate_Show_Area_Width - 20 * 2, Locate_Show_Area_Height - 20 * 2))
        self.diff_web_view.setHidden(True)              # 默认隐藏
        self.diff_web_view.setZoomFactor(0.70)          # 缩放

        # 下方状态信息栏
        self.bottom_state_bar = QWidget(self.show_area_widget)
        self.bottom_state_bar.setGeometry(QRect(250, 740, 800, 60))
        self.bottom_state_bar.setObjectName("Bottom_State_Bar")
        # 定位总时长Label
        self.locate_time_label = QLabel(self.bottom_state_bar)
        self.locate_time_label.setGeometry(QRect(20, 20, 200, 20))
        self.locate_time_label.setObjectName("Locate_Time_Label")
        self.locate_time_label.setAlignment(Qt.AlignLeft)
        # AR label
        self.ar_label = QLabel(self.bottom_state_bar)
        self.ar_label.setGeometry(QRect(260, 20, 100, 20))
        self.ar_label.setObjectName("AR_Label")
        self.ar_label.setAlignment(Qt.AlignLeft)
        # 相似度Label
        self.sim_ratio_label = QLabel(self.bottom_state_bar)
        self.sim_ratio_label.setGeometry(QRect(360, 20, 100, 20))
        self.sim_ratio_label.setObjectName("Sim_Ratio_Label")
        self.sim_ratio_label.setAlignment(Qt.AlignCenter)
        # CR label
        self.cr_label = QLabel(self.bottom_state_bar)
        self.cr_label.setGeometry(QRect(500, 20, 100, 20))
        self.cr_label.setObjectName("CR_Label")
        self.cr_label.setAlignment(Qt.AlignLeft)
        # 识别总时长Label
        self.rec_time_label = QLabel(self.bottom_state_bar)
        self.rec_time_label.setGeometry(QRect(560, 20, 200, 20))
        self.rec_time_label.setObjectName("Rec_Time_Label")
        self.rec_time_label.setAlignment(Qt.AlignRight)


    # 事件响应
    @pyqtSlot()
    # 选择单个图像文件
    def choose_img_file(self):
        if self.start_flag:                 # 正在处理中,则不再响应
            return

        # 获取图像路径: 支持的图像类型(jpg, png)
        file_path, file_type = QFileDialog.getOpenFileName(self, "选取文件", fm.get_Curr_Dir(), "Images (*.jpg *.png)")
        if file_path == "":  # 取消选择
            return

        # 重置参数
        self.show_diff_flag = False
        self.ori_image_path = None
        self.ori_label_list = []
        self.res_image_list = None
        self.locate_start_timer = 0
        self.locate_end_timer = 0
        self.rec_start_timer = 0
        self.rec_end_timer = 0
        self.backThread = None
        self.dbnetThread = None
        self.exit_full_size_view_mode()
        self.mid_circle_area.setHidden(True)                                # 默认隐藏放大按钮区域
        self.res_text_view.clear_text_for_update()                          # 清除上次显示的残留信息
        self.diff_web_view.load(QUrl(""))                                   # 清除上次显示的残留信息

        txt_file_path = file_path.split('.')[0] + ".txt"                    # 查找与选择图像同名的txt文件
        if os.path.exists(txt_file_path):                                   # 图像有对应的标签txt文件
            self.res_text_view.setHidden(True)                              # 隐藏自定义textview
            self.diff_web_view.setHidden(False)                             # 显示对比视图
            self.show_diff_flag = True                                      # 修改对比视图显示标志, 也即存在标签标志

            with open(txt_file_path, 'r', encoding='gbk') as f:             # gbk格式打开
                texts = f.readlines()
                for line in texts:
                    self.ori_label_list.append(line.strip('\n'))
            f.close()
        else:                                                               # 图像没有对应的标签txt文件
            self.res_text_view.setHidden(False)                             # 显示自定义textview
            self.diff_web_view.setHidden(True)                              # 隐藏对比视图
            self.show_diff_flag = False                                     # 修改对比视图显示标志

        self.start_flag = True                                              # 开始处理, 修改Start_Flag
        self.ori_image_path = file_path
        self.ori_image_View.setPixmap(QPixmap(file_path))                   # 先显示原图像
        self.locate_start_timer = time.perf_counter()                       # 定位计时器开始计时

        self.locate_time_label.setText("DBNet定位中,请等待...")
        self.rec_time_label.setText("")                                     # 状态栏label置空
        self.sim_ratio_label.setText("")
        self.ar_label.setText("")
        self.cr_label.setText("")

        if self.switch_button.state:                                        # True, 启用DBNet
            print("启用DBNet")
            self.dbnetThread = DBNetBackThread(self.ori_image_path)         # 初始化 DBNet 后台线程处理图片
            self.dbnetThread._signal.connect(self.update_dbnet_res_img)     # 设置 DBNet 后台线程回调函数
            self.dbnetThread.start()                                        # 启动DBNet后台线程
        else:                                                               # False, 启用形态学
            print("启用形态学")
            self.backThread = LocateBackThread([self.ori_image_path])       # 初始化 形态学 后台线程处理图片
            self.backThread._signal.connect(self.update_Res_ImageView)      # 设置 形态学 后台线程回调函数
            self.backThread.start()                                         # 启动形态学后台线程

    # 更新 DBNet 定位结果视图, qImg:(定位出文本行的图像, [文本行图像], [文本行图像位置])
    def update_dbnet_res_img(self, qImg):
        self.ori_image_View.setPixmap(QPixmap.fromImage(qImg[0]))                        # 更新定位出文本行的图像
        self.texts_rect = qImg[2]                                                        # 保存文本行图像位置
        self.locate_end_timer = time.perf_counter()                                      # 定位计时器结束计时
        duration = (self.locate_end_timer - self.locate_start_timer) * 1000              # 更新计时Label
        self.locate_time_label.setText("DBNet 定位时长: {:.2f} ms".format(duration))
        self.rec_time_label.setText("CRNN识别中,请等待...")

        # 识别定位出的文本行
        self.rec_start_timer = time.perf_counter()                                      # 识别计时器开始计时
        self.recogBackThread = RecogBackThread([qImg[1]])                               # 初始化识别后台线程处理图片
        self.recogBackThread._signal.connect(self.update_texts_in_textView)             # 设置后台线程回调函数
        self.recogBackThread.start()                                                    # 启动后台线程


    # 刷新形态学定位结果视图
    def update_Res_ImageView(self, qImg):
        self.res_image_list = qImg                                                       # [(定位出文本行的图像, [文本行图像], [文本行图像位置])]
        self.ori_image_View.setPixmap(QPixmap.fromImage(self.res_image_list[0][0]))      # 结果数组中只有一个元素(只选择一张图片定位)
        self.texts_rect = self.res_image_list[0][2]                                      # 保存文本行图像位置
        self.locate_end_timer = time.perf_counter()                                      # 定位计时器结束计时
        duration = (self.locate_end_timer - self.locate_start_timer) * 1000              # 更新计时Label
        self.locate_time_label.setText("形态学 定位时长: {:.2f} ms".format(duration))

        # 识别定位出的文本行
        self.rec_start_timer = time.perf_counter()                            # 识别计时器开始计时
        self.recogBackThread = RecogBackThread([self.res_image_list[0][1]])   # 初始化一个新的后台线程处理图片
        self.recogBackThread._signal.connect(self.update_texts_in_textView)   # 设置后台线程回调函数
        self.recogBackThread.start()                                          # 启动后台线程

    # 更新识别出的文字信息, texts: [[str1,str2,...], [str1, str2, ....]]
    def update_texts_in_textView(self, texts):
        self.start_flag = False                                               # 定位识别完成,修改当前状态
        self.rec_end_timer = time.perf_counter()                              # 识别计时器结束计时
        duration = (self.rec_end_timer - self.rec_start_timer) * 1000         # 更新计时Label
        self.rec_time_label.setText("识别时长: {:.2f} ms".format(duration))

        self.sim_ratio_label.setText("相似度计算中,请等待...")
        if self.show_diff_flag:                                                                         # 显示对比视图
            self.mid_circle_area.setHidden(False)                                                       # 显示放大按钮区域
            diff = difflib.HtmlDiff().make_file(self.ori_label_list, texts[0])                          #
            save_path = "/Users/soyou/Documents/EProjects/HWExplorer/diff.html"
            outfile = open(save_path, 'w')                                                              # TODO: 绝对路径修改
            outfile.write(diff)                                                                         # 保存html文件
            outfile.close()
            self.diff_web_view.load(QUrl.fromLocalFile(save_path))                                      # 显示对比视图
            seq = difflib.SequenceMatcher(None, '.'.join(self.ori_label_list), '.'.join(texts[0]))
            ratio = seq.ratio()
            self.sim_ratio_label.setText("相似度: {:.3f}".format(ratio))                                 # 设置文本相似度

            num, ar_num, cr_num = calculate_ar_cr('.'.join(self.ori_label_list), '.'.join(texts[0]))
            self.ar_label.setText("AR: {:.2f}".format(ar_num/num))                                      # 计算AR
            self.cr_label.setText("CR: {:.2f}".format(cr_num/num))                                      # 计算CR

        else:                                                                                           # 隐藏对比视图
            self.sim_ratio_label.setText(" ")                                                           # 文本相似度置空
            self.res_text_view.redraw_text_in_view(texts[0], self.texts_rect)                           # 自定义textview绘制文字信息

    # 显示全尺寸视图
    def show_full_size_view(self):
        self.show_area_widget.setHidden(True)
        self.full_size_web_view.setHidden(False)
        # TODO:  使用项目内相对路径
        self.full_size_web_view.load(QUrl.fromLocalFile("/Users/soyou/Documents/EProjects/HWExplorer/diff.html"))

    # 退出全尺寸视图模式
    def exit_full_size_view_mode(self):
        self.show_area_widget.setHidden(False)
        self.full_size_web_view.setHidden(True)
コード例 #25
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1189, 574)
        palette = QtGui.QPalette()
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(69, 78, 81))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(57, 65, 67))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(30, 34, 36))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(69, 78, 81))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(57, 65, 67))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(30, 34, 36))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
        brush = QtGui.QBrush(QtGui.QColor(69, 78, 81))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush)
        brush = QtGui.QBrush(QtGui.QColor(57, 65, 67))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush)
        brush = QtGui.QBrush(QtGui.QColor(30, 34, 36))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 255))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(23, 26, 27))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush)
        brush = QtGui.QBrush(QtGui.QColor(46, 52, 54))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(255, 255, 220))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase,
                         brush)
        brush = QtGui.QBrush(QtGui.QColor(0, 0, 0))
        brush.setStyle(QtCore.Qt.SolidPattern)
        palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText,
                         brush)
        MainWindow.setPalette(palette)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/resources/app.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        MainWindow.setWindowIcon(icon)
        MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName("gridLayout")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setSizeConstraint(
            QtWidgets.QLayout.SetDefaultConstraint)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setSizeConstraint(
            QtWidgets.QLayout.SetDefaultConstraint)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.fileNameLabel = QtWidgets.QLabel(self.centralwidget)
        self.fileNameLabel.setObjectName("fileNameLabel")
        self.horizontalLayout_3.addWidget(self.fileNameLabel)
        self.fileNameTextBox = QtWidgets.QLineEdit(self.centralwidget)
        self.fileNameTextBox.setReadOnly(True)
        self.fileNameTextBox.setObjectName("fileNameTextBox")
        self.horizontalLayout_3.addWidget(self.fileNameTextBox)
        self.openFileBtn = QtWidgets.QToolButton(self.centralwidget)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/resources/open.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.openFileBtn.setIcon(icon1)
        self.openFileBtn.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.openFileBtn.setObjectName("openFileBtn")
        self.horizontalLayout_3.addWidget(self.openFileBtn)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.previousBtn = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.previousBtn.sizePolicy().hasHeightForWidth())
        self.previousBtn.setSizePolicy(sizePolicy)
        self.previousBtn.setObjectName("previousBtn")
        self.horizontalLayout_2.addWidget(self.previousBtn)
        self.comboBox = QtWidgets.QComboBox(self.centralwidget)
        self.comboBox.setObjectName("comboBox")
        self.horizontalLayout_2.addWidget(self.comboBox)
        self.nextBtn = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.nextBtn.sizePolicy().hasHeightForWidth())
        self.nextBtn.setSizePolicy(sizePolicy)
        self.nextBtn.setObjectName("nextBtn")
        self.horizontalLayout_2.addWidget(self.nextBtn)
        self.testCaseBtn = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.testCaseBtn.sizePolicy().hasHeightForWidth())
        self.testCaseBtn.setSizePolicy(sizePolicy)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/resources/download.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.testCaseBtn.setIcon(icon2)
        self.testCaseBtn.setIconSize(QtCore.QSize(28, 28))
        self.testCaseBtn.setFlat(True)
        self.testCaseBtn.setObjectName("testCaseBtn")
        self.horizontalLayout_2.addWidget(self.testCaseBtn)
        self.problemDownloadBtn = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.problemDownloadBtn.sizePolicy().hasHeightForWidth())
        self.problemDownloadBtn.setSizePolicy(sizePolicy)
        self.problemDownloadBtn.setIcon(icon2)
        self.problemDownloadBtn.setIconSize(QtCore.QSize(28, 28))
        self.problemDownloadBtn.setFlat(True)
        self.problemDownloadBtn.setObjectName("problemDownloadBtn")
        self.horizontalLayout_2.addWidget(self.problemDownloadBtn)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.statementWebView = QWebView(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.statementWebView.sizePolicy().hasHeightForWidth())
        self.statementWebView.setSizePolicy(sizePolicy)
        self.statementWebView.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        self.statementWebView.setUrl(QtCore.QUrl("about:blank"))
        self.statementWebView.setObjectName("statementWebView")
        self.horizontalLayout.addWidget(self.statementWebView)
        self.solutionWebView = QWebView(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.solutionWebView.sizePolicy().hasHeightForWidth())
        self.solutionWebView.setSizePolicy(sizePolicy)
        self.solutionWebView.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
        self.solutionWebView.setUrl(QtCore.QUrl("about:blank"))
        self.solutionWebView.setObjectName("solutionWebView")
        self.horizontalLayout.addWidget(self.solutionWebView)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1189, 22))
        self.menubar.setObjectName("menubar")
        self.menuOpen = QtWidgets.QMenu(self.menubar)
        self.menuOpen.setObjectName("menuOpen")
        MainWindow.setMenuBar(self.menubar)
        self.statusBar = QtWidgets.QStatusBar(MainWindow)
        self.statusBar.setObjectName("statusBar")
        MainWindow.setStatusBar(self.statusBar)
        self.actionOpen = QtWidgets.QAction(MainWindow)
        self.actionOpen.setIcon(icon1)
        self.actionOpen.setObjectName("actionOpen")
        self.actionReset = QtWidgets.QAction(MainWindow)
        self.actionReset.setObjectName("actionReset")
        self.actionExit = QtWidgets.QAction(MainWindow)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/resources/exit.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionExit.setIcon(icon3)
        self.actionExit.setObjectName("actionExit")
        self.menuOpen.addAction(self.actionOpen)
        self.menuOpen.addAction(self.actionReset)
        self.menuOpen.addSeparator()
        self.menuOpen.addAction(self.actionExit)
        self.menubar.addAction(self.menuOpen.menuAction())

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(
            _translate("MainWindow", "Hackerrank Submission Data Reader"))
        self.fileNameLabel.setText(_translate("MainWindow", "File Name"))
        self.openFileBtn.setText(_translate("MainWindow", "Open"))
        self.previousBtn.setText(_translate("MainWindow", "<"))
        self.nextBtn.setText(_translate("MainWindow", ">"))
        self.testCaseBtn.setText(
            _translate("MainWindow", "Download Test Cases"))
        self.problemDownloadBtn.setText(
            _translate("MainWindow", "Download Problem Sattement"))
        self.menuOpen.setTitle(_translate("MainWindow", "File"))
        self.actionOpen.setText(_translate("MainWindow", "Open"))
        self.actionOpen.setShortcut(_translate("MainWindow", "Ctrl+O"))
        self.actionReset.setText(_translate("MainWindow", "Reset"))
        self.actionReset.setShortcut(_translate("MainWindow", "Ctrl+R"))
        self.actionExit.setText(_translate("MainWindow", "Exit"))
コード例 #26
0
class Ui_MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(Ui_MainWindow,self).__init__()
        self.setupUi(self)

    def setupUi(self,MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1048, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.emailLabel = QtWidgets.QLabel(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.emailLabel.sizePolicy().hasHeightForWidth())
        self.emailLabel.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setUnderline(True)
        font.setWeight(75)
        self.emailLabel.setFont(font)
        self.emailLabel.setObjectName("emailLabel")
        self.verticalLayout.addWidget(self.emailLabel)
        self.emailQle = QtWidgets.QLineEdit(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.emailQle.sizePolicy().hasHeightForWidth())
        self.emailQle.setSizePolicy(sizePolicy)
        self.emailQle.setMinimumSize(QtCore.QSize(200, 0))
        self.emailQle.setObjectName("emailQle")
        self.verticalLayout.addWidget(self.emailQle)
        self.emailButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.emailButton.sizePolicy().hasHeightForWidth())
        self.emailButton.setSizePolicy(sizePolicy)
        self.emailButton.setObjectName("emailButton")
        self.verticalLayout.addWidget(self.emailButton)
        self.searchTermLabel = QtWidgets.QLabel(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.searchTermLabel.sizePolicy().hasHeightForWidth())
        self.searchTermLabel.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setUnderline(True)
        font.setWeight(75)
        self.searchTermLabel.setFont(font)
        self.searchTermLabel.setObjectName("searchTermLabel")
        self.verticalLayout.addWidget(self.searchTermLabel)
        self.searchTermQle = QtWidgets.QLineEdit(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.searchTermQle.sizePolicy().hasHeightForWidth())
        self.searchTermQle.setSizePolicy(sizePolicy)
        self.searchTermQle.setObjectName("searchTermQle")
        self.verticalLayout.addWidget(self.searchTermQle)
        self.searchButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.searchButton.sizePolicy().hasHeightForWidth())
        self.searchButton.setSizePolicy(sizePolicy)
        self.searchButton.setObjectName("searchButton")
        self.verticalLayout.addWidget(self.searchButton)
        self.summariesButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.summariesButton.sizePolicy().hasHeightForWidth())
        self.summariesButton.setSizePolicy(sizePolicy)
        self.summariesButton.setObjectName("summariesButton")
        self.verticalLayout.addWidget(self.summariesButton)
        self.progressBar = QtWidgets.QProgressBar(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.progressBar.sizePolicy().hasHeightForWidth())
        self.progressBar.setSizePolicy(sizePolicy)
        self.progressBar.setMaximum(100)
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.verticalLayout.addWidget(self.progressBar)
        self.pmidsButton = QtWidgets.QPushButton(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pmidsButton.sizePolicy().hasHeightForWidth())
        self.pmidsButton.setSizePolicy(sizePolicy)
        self.pmidsButton.setObjectName("Generate PMID List")
        self.verticalLayout.addWidget(self.pmidsButton)
        self.quickStatsLabel = QtWidgets.QLabel(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.quickStatsLabel.sizePolicy().hasHeightForWidth())
        self.quickStatsLabel.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setBold(True)
        font.setUnderline(True)
        font.setWeight(75)
        self.quickStatsLabel.setFont(font)
        self.quickStatsLabel.setObjectName("quickStatsLabel")
        self.verticalLayout.addWidget(self.quickStatsLabel)
        self.previousSearchTermLabelName = QtWidgets.QLabel(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.previousSearchTermLabelName.sizePolicy().hasHeightForWidth())
        self.previousSearchTermLabelName.setSizePolicy(sizePolicy)
        font = QtGui.QFont()
        font.setItalic(True)
        self.previousSearchTermLabelName.setFont(font)
        self.previousSearchTermLabelName.setTextFormat(QtCore.Qt.PlainText)
        self.previousSearchTermLabelName.setObjectName("previousSearchTermLabelName")
        self.verticalLayout.addWidget(self.previousSearchTermLabelName)
        self.pmRefCountLabel = QtWidgets.QLabel(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pmRefCountLabel.sizePolicy().hasHeightForWidth())
        self.pmRefCountLabel.setSizePolicy(sizePolicy)
        self.pmRefCountLabel.setObjectName("pmRefCountLabel")
        self.verticalLayout.addWidget(self.pmRefCountLabel)
        self.pmcRefCountLabel = QtWidgets.QLabel(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.pmcRefCountLabel.sizePolicy().hasHeightForWidth())
        self.pmcRefCountLabel.setSizePolicy(sizePolicy)
        self.pmcRefCountLabel.setObjectName("pmcRefCountLabel")
        self.verticalLayout.addWidget(self.pmcRefCountLabel)
        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.verticalLayout.addItem(spacerItem)
        self.horizontalLayout.addLayout(self.verticalLayout)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_2.addWidget(self.label_2)
        self.webEngineView = QWebEngineView(self.centralwidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.webEngineView.sizePolicy().hasHeightForWidth())
        self.webEngineView.setSizePolicy(sizePolicy)
        self.webEngineView.setUrl(QtCore.QUrl("https://www.ncbi.nlm.nih.gov/Structure/flink/flink.cgi"))
        self.webEngineView.setObjectName("webEngineView")
        self.verticalLayout_2.addWidget(self.webEngineView)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.verticalLayout_2.addWidget(self.label)
        self.treeView = QtWidgets.QTreeView(self.centralwidget)
        self.treeView.setMinimumSize(QtCore.QSize(200, 150))
        self.treeView.setObjectName("treeView")
        self.verticalLayout_2.addWidget(self.treeView)
        self.horizontalLayout.addLayout(self.verticalLayout_2)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1048, 22))
        self.menubar.setNativeMenuBar(True)
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.emailLabel.setText(_translate("MainWindow", "Email:"))
        self.emailButton.setText(_translate("MainWindow", "Set Email"))
        self.searchTermLabel.setText(_translate("MainWindow", "Search Term:"))
        self.searchButton.setText(_translate("MainWindow", "Search"))
        self.summariesButton.setText(_translate("MainWindow", "Generate Summaries"))
        self.pmidsButton.setText(_translate("MainWindow", "Generate PMID List"))
        self.quickStatsLabel.setText(_translate("MainWindow", "Quick Stats:"))
        self.previousSearchTermLabelName.setText(_translate("MainWindow", "None"))
        self.pmRefCountLabel.setText(_translate("MainWindow", "Pm Ref Count:"))
        self.pmcRefCountLabel.setText(_translate("MainWindow", "Pmc Ref Count:"))
        self.label_2.setText(_translate("MainWindow", "NCBI FLink WebPage. Right-click for context menu to access back/forward/reload buttons."))
        self.label.setText(_translate("MainWindow", "Double-click file (below) to change name:"))
コード例 #27
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(972, 575)
        MainWindow.setMinimumSize(QtCore.QSize(972, 575))
        MainWindow.setMaximumSize(QtCore.QSize(972, 575))
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalFrame_3 = QtWidgets.QFrame(self.centralwidget)
        self.horizontalFrame_3.setGeometry(QtCore.QRect(0, 0, 971, 571))
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.horizontalFrame_3.sizePolicy().hasHeightForWidth())
        self.horizontalFrame_3.setSizePolicy(sizePolicy)
        self.horizontalFrame_3.setObjectName("horizontalFrame_3")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalFrame_3)
        self.horizontalLayout_3.setContentsMargins(4, 4, 4, 4)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.widget = QtWidgets.QWidget(self.horizontalFrame_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.widget.sizePolicy().hasHeightForWidth())
        self.widget.setSizePolicy(sizePolicy)
        self.widget.setObjectName("widget")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget)
        self.horizontalLayout_2.setSizeConstraint(
            QtWidgets.QLayout.SetDefaultConstraint)
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.widget1 = QtWidgets.QWidget(self.widget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.widget1.sizePolicy().hasHeightForWidth())
        self.widget1.setSizePolicy(sizePolicy)
        self.widget1.setObjectName("widget1")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget1)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label = QtWidgets.QLabel(self.widget1)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.verticalLayout_2.addWidget(self.label)
        self.listWidget = QtWidgets.QListWidget(self.widget1)
        self.listWidget.setObjectName("listWidget")
        self.verticalLayout_2.addWidget(self.listWidget)
        self.Button_check = QtWidgets.QPushButton(self.widget1)
        self.Button_check.setObjectName("Button_check")
        self.verticalLayout_2.addWidget(self.Button_check)
        self.horizontalLayout_2.addWidget(self.widget1)
        self.horizontalLayout_3.addWidget(self.widget)
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.widget2 = QWebEngineView()
        self.widget2.setUrl(QUrl("https://gametowndev.tk/news.html"))
        self.widget2.setObjectName("widget2")
        self.verticalLayout.addWidget(self.widget2)
        self.widget3 = QtWidgets.QWidget(self.horizontalFrame_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.widget3.sizePolicy().hasHeightForWidth())
        self.widget3.setSizePolicy(sizePolicy)
        self.widget3.setObjectName("widget3")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget3)
        self.horizontalLayout.setObjectName("horizontalLayout")
        spacerItem = QtWidgets.QSpacerItem(400, 20,
                                           QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout.addItem(spacerItem)
        self.Button_option = QtWidgets.QPushButton(self.widget3)
        self.Button_option.setObjectName("Button_option")
        self.horizontalLayout.addWidget(self.Button_option)
        self.Button_launch = QtWidgets.QPushButton(self.widget3)
        self.Button_launch.setObjectName("Button_launch")
        self.horizontalLayout.addWidget(self.Button_launch)
        self.verticalLayout.addWidget(self.widget3)
        self.horizontalLayout_3.addLayout(self.verticalLayout)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        '''self.Button_check.clicked.connect()'''
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MRS Launcher"))
        self.label.setText(_translate("MainWindow", "모드팩 목록"))
        self.Button_check.setText(_translate("MainWindow", "새로고침"))
        self.Button_option.setText(_translate("MainWindow", "설정"))
        self.Button_launch.setText(_translate("MainWindow", "실행"))
コード例 #28
0
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(620, 518)
        self.gridLayout = QtWidgets.QGridLayout(Dialog)
        self.gridLayout.setObjectName("gridLayout")
        self.jumpBt = QtWidgets.QPushButton(Dialog)
        self.jumpBt.setObjectName("jumpBt")
        self.gridLayout.addWidget(self.jumpBt, 0, 2, 1, 1)
        self.spinBox = QtWidgets.QSpinBox(Dialog)
        self.spinBox.setObjectName("spinBox")
        self.gridLayout.addWidget(self.spinBox, 0, 1, 1, 1)
        self.comboBox = QtWidgets.QComboBox(Dialog)
        self.comboBox.setObjectName("comboBox")
        self.gridLayout.addWidget(self.comboBox, 0, 3, 1, 2)
        self.sumLabel = QtWidgets.QLabel(Dialog)
        self.sumLabel.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft
                                   | QtCore.Qt.AlignVCenter)
        self.sumLabel.setObjectName("sumLabel")
        self.gridLayout.addWidget(self.sumLabel, 0, 0, 1, 1)
        self.label = QtWidgets.QLabel(Dialog)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 3, 0, 1, 6)
        self.pushButton_4 = QtWidgets.QPushButton(Dialog)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 5, 3, 1, 3)
        # self.widget = QtWidgets.QWidget(Dialog)
        # self.widget.setObjectName("widget")
        self.browser = QWebEngineView()
        self.browser.setObjectName("webView")
        self.gridLayout.addWidget(self.browser, 4, 0, 1, 6)
        self.confirmBt = QtWidgets.QPushButton(Dialog)
        self.confirmBt.setObjectName("confirmBt")
        self.gridLayout.addWidget(self.confirmBt, 0, 5, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(Dialog)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 5, 0, 1, 3)
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 6, 3, 1, 3)
        self.pushButton_2 = QtWidgets.QPushButton(Dialog)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 6, 0, 1, 3)
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.lineEdit.sizePolicy().hasHeightForWidth())
        self.lineEdit.setSizePolicy(sizePolicy)
        self.lineEdit.setAutoFillBackground(False)
        self.lineEdit.setInputMethodHints(QtCore.Qt.ImhNone)
        self.lineEdit.setDragEnabled(False)
        self.lineEdit.setClearButtonEnabled(False)
        self.lineEdit.setObjectName("lineEdit")
        self.gridLayout.addWidget(self.lineEdit, 8, 0, 1, 2)
        self.SearchBt = QtWidgets.QPushButton(Dialog)
        self.SearchBt.setEnabled(True)
        self.SearchBt.setObjectName("SearchBt")
        self.gridLayout.addWidget(self.SearchBt, 8, 2, 1, 1)
        self.SearchPrev = QtWidgets.QPushButton(Dialog)
        self.SearchPrev.setEnabled(True)
        self.SearchPrev.setObjectName("SearchPrev")
        self.gridLayout.addWidget(self.SearchPrev, 8, 3, 1, 1)
        self.numberLabel = QtWidgets.QLabel(Dialog)
        self.numberLabel.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.numberLabel.sizePolicy().hasHeightForWidth())
        self.numberLabel.setSizePolicy(sizePolicy)
        self.numberLabel.setAlignment(QtCore.Qt.AlignCenter)
        self.numberLabel.setObjectName("numberLabel")
        self.gridLayout.addWidget(self.numberLabel, 8, 4, 1, 1)
        self.SearchNext = QtWidgets.QPushButton(Dialog)
        self.SearchNext.setEnabled(True)
        self.SearchNext.setObjectName("SearchNext")
        self.gridLayout.addWidget(self.SearchNext, 8, 5, 1, 1)
        self.KeySearchBt = QtWidgets.QPushButton(Dialog)
        self.KeySearchBt.setObjectName("KeySearchBt")
        self.gridLayout.addWidget(self.KeySearchBt, 7, 0, 1, 6)

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Question Bank"))
        self.jumpBt.setText(_translate("Dialog", "题号跳转"))
        self.sumLabel.setText(_translate("Dialog", "总题数:0"))
        self.label.setText(_translate("Dialog", "等待出题..."))
        self.pushButton_4.setText(_translate("Dialog", "查看解析"))
        self.confirmBt.setText(_translate("Dialog", "确定"))
        self.pushButton_3.setText(_translate("Dialog", "下一题"))
        self.pushButton.setText(_translate("Dialog", "随机"))
        self.pushButton_2.setText(_translate("Dialog", "上一题"))
        self.SearchBt.setText(_translate("Dialog", "查询"))
        self.SearchPrev.setText(_translate("Dialog", "上一个"))
        self.numberLabel.setText(_translate("Dialog", "0/0"))
        self.SearchNext.setText(_translate("Dialog", "下一个"))
        self.KeySearchBt.setText(_translate("Dialog", "关键字查询"))
コード例 #29
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(913, 971)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(3)
        sizePolicy.setVerticalStretch(33)
        sizePolicy.setHeightForWidth(
            MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
        MainWindow.setAutoFillBackground(True)
        MainWindow.setStyleSheet("")
        MainWindow.setAnimated(True)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralWidget)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.tabWidget_PGMS = QtWidgets.QTabWidget(self.centralWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(20)
        sizePolicy.setVerticalStretch(44)
        sizePolicy.setHeightForWidth(
            self.tabWidget_PGMS.sizePolicy().hasHeightForWidth())
        self.tabWidget_PGMS.setSizePolicy(sizePolicy)
        self.tabWidget_PGMS.setMinimumSize(QtCore.QSize(800, 700))
        self.tabWidget_PGMS.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.tabWidget_PGMS.setAutoFillBackground(True)
        self.tabWidget_PGMS.setStyleSheet("")
        self.tabWidget_PGMS.setTabBarAutoHide(True)
        self.tabWidget_PGMS.setObjectName("tabWidget_PGMS")
        self.tab_Combination = QtWidgets.QWidget()
        self.tab_Combination.setObjectName("tab_Combination")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.tab_Combination)
        self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.scrollArea_3 = QtWidgets.QScrollArea(self.tab_Combination)
        self.scrollArea_3.setWidgetResizable(True)
        self.scrollArea_3.setAlignment(QtCore.Qt.AlignLeading
                                       | QtCore.Qt.AlignLeft
                                       | QtCore.Qt.AlignTop)
        self.scrollArea_3.setObjectName("scrollArea_3")
        self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_3.setGeometry(
            QtCore.QRect(0, 0, 852, 958))
        self.scrollAreaWidgetContents_3.setObjectName(
            "scrollAreaWidgetContents_3")
        self.verticalLayout_8 = QtWidgets.QVBoxLayout(
            self.scrollAreaWidgetContents_3)
        self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_8.setObjectName("verticalLayout_8")
        self.verticalLayout_6 = QtWidgets.QVBoxLayout()
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem = QtWidgets.QSpacerItem(40, 20,
                                           QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.verticalLayout_7 = QtWidgets.QVBoxLayout()
        self.verticalLayout_7.setObjectName("verticalLayout_7")
        self.label_7 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_7.setText("")
        self.label_7.setObjectName("label_7")
        self.verticalLayout_7.addWidget(self.label_7)
        self.label_10 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.label_10.sizePolicy().hasHeightForWidth())
        self.label_10.setSizePolicy(sizePolicy)
        self.label_10.setObjectName("label_10")
        self.verticalLayout_7.addWidget(self.label_10)
        self.label_11 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_11.setObjectName("label_11")
        self.verticalLayout_7.addWidget(self.label_11)
        self.label_12 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_12.setObjectName("label_12")
        self.verticalLayout_7.addWidget(self.label_12)
        self.horizontalLayout_3.addLayout(self.verticalLayout_7)
        spacerItem1 = QtWidgets.QSpacerItem(20, 40,
                                            QtWidgets.QSizePolicy.Minimum,
                                            QtWidgets.QSizePolicy.Expanding)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.gridLayout_5 = QtWidgets.QGridLayout()
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.label_8 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_8.setObjectName("label_8")
        self.gridLayout_5.addWidget(self.label_8, 0, 0, 1, 1)
        self.label_9 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_9.setObjectName("label_9")
        self.gridLayout_5.addWidget(self.label_9, 0, 1, 1, 1)
        self.doubleSpinBox_returns_min = QtWidgets.QDoubleSpinBox(
            self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.doubleSpinBox_returns_min.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_returns_min.setSizePolicy(sizePolicy)
        self.doubleSpinBox_returns_min.setMaximum(0.3)
        self.doubleSpinBox_returns_min.setSingleStep(0.01)
        self.doubleSpinBox_returns_min.setProperty("value", 0.0)
        self.doubleSpinBox_returns_min.setObjectName(
            "doubleSpinBox_returns_min")
        self.gridLayout_5.addWidget(self.doubleSpinBox_returns_min, 1, 0, 1, 1)
        self.doubleSpinBox_returns_max = QtWidgets.QDoubleSpinBox(
            self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.doubleSpinBox_returns_max.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_returns_max.setSizePolicy(sizePolicy)
        self.doubleSpinBox_returns_max.setMinimum(0.0)
        self.doubleSpinBox_returns_max.setMaximum(10.0)
        self.doubleSpinBox_returns_max.setSingleStep(0.1)
        self.doubleSpinBox_returns_max.setProperty("value", 0.0)
        self.doubleSpinBox_returns_max.setObjectName(
            "doubleSpinBox_returns_max")
        self.gridLayout_5.addWidget(self.doubleSpinBox_returns_max, 1, 1, 1, 1)
        self.doubleSpinBox_maxdrawdown_min = QtWidgets.QDoubleSpinBox(
            self.scrollAreaWidgetContents_3)
        self.doubleSpinBox_maxdrawdown_min.setMinimum(0.1)
        self.doubleSpinBox_maxdrawdown_min.setMaximum(1.0)
        self.doubleSpinBox_maxdrawdown_min.setSingleStep(0.01)
        self.doubleSpinBox_maxdrawdown_min.setProperty("value", 0.7)
        self.doubleSpinBox_maxdrawdown_min.setObjectName(
            "doubleSpinBox_maxdrawdown_min")
        self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_min, 2, 0,
                                    1, 1)
        self.doubleSpinBox_maxdrawdown_max = QtWidgets.QDoubleSpinBox(
            self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.doubleSpinBox_maxdrawdown_max.
                                     sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_maxdrawdown_max.setSizePolicy(sizePolicy)
        self.doubleSpinBox_maxdrawdown_max.setMinimum(0.2)
        self.doubleSpinBox_maxdrawdown_max.setMaximum(1.0)
        self.doubleSpinBox_maxdrawdown_max.setSingleStep(0.01)
        self.doubleSpinBox_maxdrawdown_max.setProperty("value", 1.0)
        self.doubleSpinBox_maxdrawdown_max.setObjectName(
            "doubleSpinBox_maxdrawdown_max")
        self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_max, 2, 1,
                                    1, 1)
        self.doubleSpinBox_sharp_min = QtWidgets.QDoubleSpinBox(
            self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.doubleSpinBox_sharp_min.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_sharp_min.setSizePolicy(sizePolicy)
        self.doubleSpinBox_sharp_min.setMaximum(40.0)
        self.doubleSpinBox_sharp_min.setSingleStep(0.05)
        self.doubleSpinBox_sharp_min.setObjectName("doubleSpinBox_sharp_min")
        self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_min, 3, 0, 1, 1)
        self.doubleSpinBox_sharp_max = QtWidgets.QDoubleSpinBox(
            self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.doubleSpinBox_sharp_max.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_sharp_max.setSizePolicy(sizePolicy)
        self.doubleSpinBox_sharp_max.setProperty("value", 10.0)
        self.doubleSpinBox_sharp_max.setObjectName("doubleSpinBox_sharp_max")
        self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_max, 3, 1, 1, 1)
        self.horizontalLayout_3.addLayout(self.gridLayout_5)
        self.line_2 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3)
        self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.horizontalLayout_3.addWidget(self.line_2)
        spacerItem2 = QtWidgets.QSpacerItem(200, 20,
                                            QtWidgets.QSizePolicy.Fixed,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.pushButton_start_combination = QtWidgets.QPushButton(
            self.scrollAreaWidgetContents_3)
        self.pushButton_start_combination.setObjectName(
            "pushButton_start_combination")
        self.horizontalLayout_3.addWidget(self.pushButton_start_combination)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20,
                                            QtWidgets.QSizePolicy.Expanding,
                                            QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem3)
        self.verticalLayout_6.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.checkBox_stock = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_stock.setObjectName("checkBox_stock")
        self.horizontalLayout_7.addWidget(self.checkBox_stock)
        self.checkBox_compound = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_compound.setObjectName("checkBox_compound")
        self.horizontalLayout_7.addWidget(self.checkBox_compound)
        self.checkBox_future_manage = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_future_manage.setObjectName("checkBox_future_manage")
        self.horizontalLayout_7.addWidget(self.checkBox_future_manage)
        self.checkBox_event = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_event.setObjectName("checkBox_event")
        self.horizontalLayout_7.addWidget(self.checkBox_event)
        self.checkBox_bond = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_bond.setObjectName("checkBox_bond")
        self.horizontalLayout_7.addWidget(self.checkBox_bond)
        self.checkBox_macro = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_macro.setObjectName("checkBox_macro")
        self.horizontalLayout_7.addWidget(self.checkBox_macro)
        self.checkBox_combination_fund = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_combination_fund.setObjectName(
            "checkBox_combination_fund")
        self.horizontalLayout_7.addWidget(self.checkBox_combination_fund)
        self.checkBox_relative_fund = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_relative_fund.setObjectName("checkBox_relative_fund")
        self.horizontalLayout_7.addWidget(self.checkBox_relative_fund)
        self.checkBox_others = QtWidgets.QCheckBox(
            self.scrollAreaWidgetContents_3)
        self.checkBox_others.setObjectName("checkBox_others")
        self.horizontalLayout_7.addWidget(self.checkBox_others)
        self.verticalLayout_6.addLayout(self.horizontalLayout_7)
        self.verticalLayout_8.addLayout(self.verticalLayout_6)
        self.QWebEngineview_Combination_monte_markovitz = QWebEngineView(
            self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_monte_markovitz.setMinimumSize(
            QtCore.QSize(0, 300))
        self.QWebEngineview_Combination_monte_markovitz.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_monte_markovitz.setObjectName(
            "QWebEngineview_Combination_monte_markovitz")
        self.verticalLayout_8.addWidget(
            self.QWebEngineview_Combination_monte_markovitz)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.QWebEngineview_Combination_Pie = QWebEngineView(
            self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_Pie.setMinimumSize(
            QtCore.QSize(50, 200))
        self.QWebEngineview_Combination_Pie.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_Pie.setObjectName(
            "QWebEngineview_Combination_Pie")
        self.horizontalLayout_5.addWidget(self.QWebEngineview_Combination_Pie)
        self.QWebEngineview_Combination_Table = QWebEngineView(
            self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_Table.setMinimumSize(
            QtCore.QSize(0, 200))
        self.QWebEngineview_Combination_Table.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_Table.setObjectName(
            "QWebEngineview_Combination_Table")
        self.horizontalLayout_5.addWidget(
            self.QWebEngineview_Combination_Table)
        self.verticalLayout_8.addLayout(self.horizontalLayout_5)
        self.QWebEngineview_Combination_Versus = QWebEngineView(
            self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_Versus.setEnabled(True)
        self.QWebEngineview_Combination_Versus.setMinimumSize(
            QtCore.QSize(0, 300))
        self.QWebEngineview_Combination_Versus.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_Versus.setObjectName(
            "QWebEngineview_Combination_Versus")
        self.verticalLayout_8.addWidget(self.QWebEngineview_Combination_Versus)
        self.QWebEngineview_Combination_monte_markovitz.raise_()
        self.QWebEngineview_Combination_Versus.raise_()
        self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_3)
        self.horizontalLayout_6.addWidget(self.scrollArea_3)
        self.tabWidget_PGMS.addTab(self.tab_Combination, "")
        self.verticalLayout_5.addWidget(self.tabWidget_PGMS)
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 913, 23))
        self.menuBar.setObjectName("menuBar")
        MainWindow.setMenuBar(self.menuBar)
        self.action = QtWidgets.QAction(MainWindow)
        self.action.setObjectName("action")
        self.action_2 = QtWidgets.QAction(MainWindow)
        self.action_2.setObjectName("action_2")
        self.action_3 = QtWidgets.QAction(MainWindow)
        self.action_3.setObjectName("action_3")
        self.action_4 = QtWidgets.QAction(MainWindow)
        self.action_4.setObjectName("action_4")
        self.action_5 = QtWidgets.QAction(MainWindow)
        self.action_5.setObjectName("action_5")
        self.action_6 = QtWidgets.QAction(MainWindow)
        self.action_6.setObjectName("action_6")
        self.action_8 = QtWidgets.QAction(MainWindow)
        self.action_8.setObjectName("action_8")
        self.action_9 = QtWidgets.QAction(MainWindow)
        self.action_9.setObjectName("action_9")
        self.action_10 = QtWidgets.QAction(MainWindow)
        self.action_10.setObjectName("action_10")
        self.action_11 = QtWidgets.QAction(MainWindow)
        self.action_11.setObjectName("action_11")
        self.action_Qt = QtWidgets.QAction(MainWindow)
        self.action_Qt.setObjectName("action_Qt")
        self.action_PyQt = QtWidgets.QAction(MainWindow)
        self.action_PyQt.setObjectName("action_PyQt")
        self.action_12 = QtWidgets.QAction(MainWindow)
        self.action_12.setObjectName("action_12")

        self.retranslateUi(MainWindow)
        self.tabWidget_PGMS.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "基金量化投研系統v0.11"))
        self.label_10.setText(_translate("MainWindow", "收益"))
        self.label_11.setText(_translate("MainWindow", "最大回撤"))
        self.label_12.setText(_translate("MainWindow", "Sharp比"))
        self.label_8.setText(_translate("MainWindow", "最小範圍"))
        self.label_9.setText(_translate("MainWindow", "最大範圍"))
        self.pushButton_start_combination.setText(
            _translate("MainWindow", "開始"))
        self.checkBox_stock.setText(_translate("MainWindow", "股票策略"))
        self.checkBox_compound.setText(_translate("MainWindow", "複合策略"))
        self.checkBox_future_manage.setText(_translate("MainWindow", "管理期貨"))
        self.checkBox_event.setText(_translate("MainWindow", "事件驅動"))
        self.checkBox_bond.setText(_translate("MainWindow", "債券策略"))
        self.checkBox_macro.setText(_translate("MainWindow", "宏觀策略"))
        self.checkBox_combination_fund.setText(_translate(
            "MainWindow", "組合基金"))
        self.checkBox_relative_fund.setText(_translate("MainWindow", "相對價值"))
        self.checkBox_others.setText(_translate("MainWindow", "其他策略"))
        self.tabWidget_PGMS.setTabText(
            self.tabWidget_PGMS.indexOf(self.tab_Combination),
            _translate("MainWindow", "產品組合管理"))
        self.action.setText(_translate("MainWindow", "開啟"))
        self.action_2.setText(_translate("MainWindow", "關閉"))
        self.action_3.setText(_translate("MainWindow", "儲存"))
        self.action_4.setText(_translate("MainWindow", "退出"))
        self.action_5.setText(_translate("MainWindow", "複製"))
        self.action_6.setText(_translate("MainWindow", "貼上"))
        self.action_8.setText(_translate("MainWindow", "哈哈"))
        self.action_9.setText(_translate("MainWindow", "關於"))
        self.action_10.setText(_translate("MainWindow", "使用說明"))
        self.action_11.setText(_translate("MainWindow", "關於軟體"))
        self.action_Qt.setText(_translate("MainWindow", "關於Qt"))
        self.action_PyQt.setText(_translate("MainWindow", "關於PyQt"))
        self.action_12.setText(_translate("MainWindow", "其他"))
コード例 #30
0
ファイル: Ui_combination.py プロジェクト: kiorry/PYQT
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(913, 971)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(3)
        sizePolicy.setVerticalStretch(33)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu)
        MainWindow.setAutoFillBackground(True)
        MainWindow.setStyleSheet("")
        MainWindow.setAnimated(True)
        self.centralWidget = QtWidgets.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.centralWidget)
        self.verticalLayout_5.setObjectName("verticalLayout_5")
        self.tabWidget_PGMS = QtWidgets.QTabWidget(self.centralWidget)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(20)
        sizePolicy.setVerticalStretch(44)
        sizePolicy.setHeightForWidth(self.tabWidget_PGMS.sizePolicy().hasHeightForWidth())
        self.tabWidget_PGMS.setSizePolicy(sizePolicy)
        self.tabWidget_PGMS.setMinimumSize(QtCore.QSize(800, 700))
        self.tabWidget_PGMS.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.tabWidget_PGMS.setAutoFillBackground(True)
        self.tabWidget_PGMS.setStyleSheet("")
        self.tabWidget_PGMS.setTabBarAutoHide(True)
        self.tabWidget_PGMS.setObjectName("tabWidget_PGMS")
        self.tab_Combination = QtWidgets.QWidget()
        self.tab_Combination.setObjectName("tab_Combination")
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.tab_Combination)
        self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.scrollArea_3 = QtWidgets.QScrollArea(self.tab_Combination)
        self.scrollArea_3.setWidgetResizable(True)
        self.scrollArea_3.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.scrollArea_3.setObjectName("scrollArea_3")
        self.scrollAreaWidgetContents_3 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_3.setGeometry(QtCore.QRect(0, 0, 852, 958))
        self.scrollAreaWidgetContents_3.setObjectName("scrollAreaWidgetContents_3")
        self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents_3)
        self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_8.setObjectName("verticalLayout_8")
        self.verticalLayout_6 = QtWidgets.QVBoxLayout()
        self.verticalLayout_6.setObjectName("verticalLayout_6")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem)
        self.verticalLayout_7 = QtWidgets.QVBoxLayout()
        self.verticalLayout_7.setObjectName("verticalLayout_7")
        self.label_7 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_7.setText("")
        self.label_7.setObjectName("label_7")
        self.verticalLayout_7.addWidget(self.label_7)
        self.label_10 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_10.sizePolicy().hasHeightForWidth())
        self.label_10.setSizePolicy(sizePolicy)
        self.label_10.setObjectName("label_10")
        self.verticalLayout_7.addWidget(self.label_10)
        self.label_11 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_11.setObjectName("label_11")
        self.verticalLayout_7.addWidget(self.label_11)
        self.label_12 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_12.setObjectName("label_12")
        self.verticalLayout_7.addWidget(self.label_12)
        self.horizontalLayout_3.addLayout(self.verticalLayout_7)
        spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.horizontalLayout_3.addItem(spacerItem1)
        self.gridLayout_5 = QtWidgets.QGridLayout()
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.label_8 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_8.setObjectName("label_8")
        self.gridLayout_5.addWidget(self.label_8, 0, 0, 1, 1)
        self.label_9 = QtWidgets.QLabel(self.scrollAreaWidgetContents_3)
        self.label_9.setObjectName("label_9")
        self.gridLayout_5.addWidget(self.label_9, 0, 1, 1, 1)
        self.doubleSpinBox_returns_min = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.doubleSpinBox_returns_min.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_returns_min.setSizePolicy(sizePolicy)
        self.doubleSpinBox_returns_min.setMaximum(0.3)
        self.doubleSpinBox_returns_min.setSingleStep(0.01)
        self.doubleSpinBox_returns_min.setProperty("value", 0.0)
        self.doubleSpinBox_returns_min.setObjectName("doubleSpinBox_returns_min")
        self.gridLayout_5.addWidget(self.doubleSpinBox_returns_min, 1, 0, 1, 1)
        self.doubleSpinBox_returns_max = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.doubleSpinBox_returns_max.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_returns_max.setSizePolicy(sizePolicy)
        self.doubleSpinBox_returns_max.setMinimum(0.0)
        self.doubleSpinBox_returns_max.setMaximum(10.0)
        self.doubleSpinBox_returns_max.setSingleStep(0.1)
        self.doubleSpinBox_returns_max.setProperty("value", 0.0)
        self.doubleSpinBox_returns_max.setObjectName("doubleSpinBox_returns_max")
        self.gridLayout_5.addWidget(self.doubleSpinBox_returns_max, 1, 1, 1, 1)
        self.doubleSpinBox_maxdrawdown_min = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3)
        self.doubleSpinBox_maxdrawdown_min.setMinimum(0.1)
        self.doubleSpinBox_maxdrawdown_min.setMaximum(1.0)
        self.doubleSpinBox_maxdrawdown_min.setSingleStep(0.01)
        self.doubleSpinBox_maxdrawdown_min.setProperty("value", 0.7)
        self.doubleSpinBox_maxdrawdown_min.setObjectName("doubleSpinBox_maxdrawdown_min")
        self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_min, 2, 0, 1, 1)
        self.doubleSpinBox_maxdrawdown_max = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.doubleSpinBox_maxdrawdown_max.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_maxdrawdown_max.setSizePolicy(sizePolicy)
        self.doubleSpinBox_maxdrawdown_max.setMinimum(0.2)
        self.doubleSpinBox_maxdrawdown_max.setMaximum(1.0)
        self.doubleSpinBox_maxdrawdown_max.setSingleStep(0.01)
        self.doubleSpinBox_maxdrawdown_max.setProperty("value", 1.0)
        self.doubleSpinBox_maxdrawdown_max.setObjectName("doubleSpinBox_maxdrawdown_max")
        self.gridLayout_5.addWidget(self.doubleSpinBox_maxdrawdown_max, 2, 1, 1, 1)
        self.doubleSpinBox_sharp_min = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.doubleSpinBox_sharp_min.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_sharp_min.setSizePolicy(sizePolicy)
        self.doubleSpinBox_sharp_min.setMaximum(40.0)
        self.doubleSpinBox_sharp_min.setSingleStep(0.05)
        self.doubleSpinBox_sharp_min.setObjectName("doubleSpinBox_sharp_min")
        self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_min, 3, 0, 1, 1)
        self.doubleSpinBox_sharp_max = QtWidgets.QDoubleSpinBox(self.scrollAreaWidgetContents_3)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.doubleSpinBox_sharp_max.sizePolicy().hasHeightForWidth())
        self.doubleSpinBox_sharp_max.setSizePolicy(sizePolicy)
        self.doubleSpinBox_sharp_max.setProperty("value", 10.0)
        self.doubleSpinBox_sharp_max.setObjectName("doubleSpinBox_sharp_max")
        self.gridLayout_5.addWidget(self.doubleSpinBox_sharp_max, 3, 1, 1, 1)
        self.horizontalLayout_3.addLayout(self.gridLayout_5)
        self.line_2 = QtWidgets.QFrame(self.scrollAreaWidgetContents_3)
        self.line_2.setFrameShape(QtWidgets.QFrame.VLine)
        self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
        self.line_2.setObjectName("line_2")
        self.horizontalLayout_3.addWidget(self.line_2)
        spacerItem2 = QtWidgets.QSpacerItem(200, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.pushButton_start_combination = QtWidgets.QPushButton(self.scrollAreaWidgetContents_3)
        self.pushButton_start_combination.setObjectName("pushButton_start_combination")
        self.horizontalLayout_3.addWidget(self.pushButton_start_combination)
        spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem3)
        self.verticalLayout_6.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        self.checkBox_stock = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_stock.setObjectName("checkBox_stock")
        self.horizontalLayout_7.addWidget(self.checkBox_stock)
        self.checkBox_compound = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_compound.setObjectName("checkBox_compound")
        self.horizontalLayout_7.addWidget(self.checkBox_compound)
        self.checkBox_future_manage = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_future_manage.setObjectName("checkBox_future_manage")
        self.horizontalLayout_7.addWidget(self.checkBox_future_manage)
        self.checkBox_event = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_event.setObjectName("checkBox_event")
        self.horizontalLayout_7.addWidget(self.checkBox_event)
        self.checkBox_bond = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_bond.setObjectName("checkBox_bond")
        self.horizontalLayout_7.addWidget(self.checkBox_bond)
        self.checkBox_macro = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_macro.setObjectName("checkBox_macro")
        self.horizontalLayout_7.addWidget(self.checkBox_macro)
        self.checkBox_combination_fund = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_combination_fund.setObjectName("checkBox_combination_fund")
        self.horizontalLayout_7.addWidget(self.checkBox_combination_fund)
        self.checkBox_relative_fund = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_relative_fund.setObjectName("checkBox_relative_fund")
        self.horizontalLayout_7.addWidget(self.checkBox_relative_fund)
        self.checkBox_others = QtWidgets.QCheckBox(self.scrollAreaWidgetContents_3)
        self.checkBox_others.setObjectName("checkBox_others")
        self.horizontalLayout_7.addWidget(self.checkBox_others)
        self.verticalLayout_6.addLayout(self.horizontalLayout_7)
        self.verticalLayout_8.addLayout(self.verticalLayout_6)
        self.QWebEngineview_Combination_monte_markovitz = QWebEngineView(self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_monte_markovitz.setMinimumSize(QtCore.QSize(0, 300))
        self.QWebEngineview_Combination_monte_markovitz.setStyleSheet("background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_monte_markovitz.setObjectName("QWebEngineview_Combination_monte_markovitz")
        self.verticalLayout_8.addWidget(self.QWebEngineview_Combination_monte_markovitz)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.QWebEngineview_Combination_Pie = QWebEngineView(self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_Pie.setMinimumSize(QtCore.QSize(50, 200))
        self.QWebEngineview_Combination_Pie.setStyleSheet("background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_Pie.setObjectName("QWebEngineview_Combination_Pie")
        self.horizontalLayout_5.addWidget(self.QWebEngineview_Combination_Pie)
        self.QWebEngineview_Combination_Table = QWebEngineView(self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_Table.setMinimumSize(QtCore.QSize(0, 200))
        self.QWebEngineview_Combination_Table.setStyleSheet("background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_Table.setObjectName("QWebEngineview_Combination_Table")
        self.horizontalLayout_5.addWidget(self.QWebEngineview_Combination_Table)
        self.verticalLayout_8.addLayout(self.horizontalLayout_5)
        self.QWebEngineview_Combination_Versus = QWebEngineView(self.scrollAreaWidgetContents_3)
        self.QWebEngineview_Combination_Versus.setEnabled(True)
        self.QWebEngineview_Combination_Versus.setMinimumSize(QtCore.QSize(0, 300))
        self.QWebEngineview_Combination_Versus.setStyleSheet("background-color: rgb(170, 170, 127);")
        self.QWebEngineview_Combination_Versus.setObjectName("QWebEngineview_Combination_Versus")
        self.verticalLayout_8.addWidget(self.QWebEngineview_Combination_Versus)
        self.QWebEngineview_Combination_monte_markovitz.raise_()
        self.QWebEngineview_Combination_Versus.raise_()
        self.scrollArea_3.setWidget(self.scrollAreaWidgetContents_3)
        self.horizontalLayout_6.addWidget(self.scrollArea_3)
        self.tabWidget_PGMS.addTab(self.tab_Combination, "")
        self.verticalLayout_5.addWidget(self.tabWidget_PGMS)
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtWidgets.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 913, 23))
        self.menuBar.setObjectName("menuBar")
        MainWindow.setMenuBar(self.menuBar)
        self.action = QtWidgets.QAction(MainWindow)
        self.action.setObjectName("action")
        self.action_2 = QtWidgets.QAction(MainWindow)
        self.action_2.setObjectName("action_2")
        self.action_3 = QtWidgets.QAction(MainWindow)
        self.action_3.setObjectName("action_3")
        self.action_4 = QtWidgets.QAction(MainWindow)
        self.action_4.setObjectName("action_4")
        self.action_5 = QtWidgets.QAction(MainWindow)
        self.action_5.setObjectName("action_5")
        self.action_6 = QtWidgets.QAction(MainWindow)
        self.action_6.setObjectName("action_6")
        self.action_8 = QtWidgets.QAction(MainWindow)
        self.action_8.setObjectName("action_8")
        self.action_9 = QtWidgets.QAction(MainWindow)
        self.action_9.setObjectName("action_9")
        self.action_10 = QtWidgets.QAction(MainWindow)
        self.action_10.setObjectName("action_10")
        self.action_11 = QtWidgets.QAction(MainWindow)
        self.action_11.setObjectName("action_11")
        self.action_Qt = QtWidgets.QAction(MainWindow)
        self.action_Qt.setObjectName("action_Qt")
        self.action_PyQt = QtWidgets.QAction(MainWindow)
        self.action_PyQt.setObjectName("action_PyQt")
        self.action_12 = QtWidgets.QAction(MainWindow)
        self.action_12.setObjectName("action_12")

        self.retranslateUi(MainWindow)
        self.tabWidget_PGMS.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "基金量化投研系统v0.11"))
        self.label_10.setText(_translate("MainWindow", "收益"))
        self.label_11.setText(_translate("MainWindow", "最大回撤"))
        self.label_12.setText(_translate("MainWindow", "Sharp比"))
        self.label_8.setText(_translate("MainWindow", "最小范围"))
        self.label_9.setText(_translate("MainWindow", "最大范围"))
        self.pushButton_start_combination.setText(_translate("MainWindow", "开始"))
        self.checkBox_stock.setText(_translate("MainWindow", "股票策略"))
        self.checkBox_compound.setText(_translate("MainWindow", "复合策略"))
        self.checkBox_future_manage.setText(_translate("MainWindow", "管理期货"))
        self.checkBox_event.setText(_translate("MainWindow", "事件驱动"))
        self.checkBox_bond.setText(_translate("MainWindow", "债券策略"))
        self.checkBox_macro.setText(_translate("MainWindow", "宏观策略"))
        self.checkBox_combination_fund.setText(_translate("MainWindow", "组合基金"))
        self.checkBox_relative_fund.setText(_translate("MainWindow", "相对价值"))
        self.checkBox_others.setText(_translate("MainWindow", "其它策略"))
        self.tabWidget_PGMS.setTabText(self.tabWidget_PGMS.indexOf(self.tab_Combination), _translate("MainWindow", "产品组合管理"))
        self.action.setText(_translate("MainWindow", "打开"))
        self.action_2.setText(_translate("MainWindow", "关闭"))
        self.action_3.setText(_translate("MainWindow", "保存"))
        self.action_4.setText(_translate("MainWindow", "退出"))
        self.action_5.setText(_translate("MainWindow", "复制"))
        self.action_6.setText(_translate("MainWindow", "黏贴"))
        self.action_8.setText(_translate("MainWindow", "哈哈"))
        self.action_9.setText(_translate("MainWindow", "关于"))
        self.action_10.setText(_translate("MainWindow", "使用说明"))
        self.action_11.setText(_translate("MainWindow", "关于软件"))
        self.action_Qt.setText(_translate("MainWindow", "关于Qt"))
        self.action_PyQt.setText(_translate("MainWindow", "关于PyQt"))
        self.action_12.setText(_translate("MainWindow", "其他"))
コード例 #31
0
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.centralwidget)
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
        self.scrollArea.setWidgetResizable(True)
        self.scrollArea.setObjectName("scrollArea")
        self.scrollAreaWidgetContents = QtWidgets.QWidget()
        self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 780, 535))
        self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout(
            self.scrollAreaWidgetContents)
        self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.widget_parameter_tree = QtWidgets.QWidget(
            self.scrollAreaWidgetContents)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.widget_parameter_tree.sizePolicy().hasHeightForWidth())
        self.widget_parameter_tree.setSizePolicy(sizePolicy)
        self.widget_parameter_tree.setMinimumSize(QtCore.QSize(100, 0))
        self.widget_parameter_tree.setObjectName("widget_parameter_tree")
        self.horizontalLayout_2.addWidget(self.widget_parameter_tree)
        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.QWebEngineView_ProductVsHs300 = QWebEngineView(
            self.scrollAreaWidgetContents)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.QWebEngineView_ProductVsHs300.
                                     sizePolicy().hasHeightForWidth())
        self.QWebEngineView_ProductVsHs300.setSizePolicy(sizePolicy)
        self.QWebEngineView_ProductVsHs300.setMinimumSize(QtCore.QSize(0, 100))
        self.QWebEngineView_ProductVsHs300.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineView_ProductVsHs300.setObjectName(
            "QWebEngineView_ProductVsHs300")
        self.verticalLayout_3.addWidget(self.QWebEngineView_ProductVsHs300)
        self.tabWidget = QtWidgets.QTabWidget(self.scrollAreaWidgetContents)
        self.tabWidget.setMinimumSize(QtCore.QSize(200, 200))
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.QWebEngineview_MonthReturn = QWebEngineView(self.tab)
        self.QWebEngineview_MonthReturn.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineview_MonthReturn.setObjectName(
            "QWebEngineview_MonthReturn")
        self.verticalLayout_2.addWidget(self.QWebEngineview_MonthReturn)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.tab_2)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.QWebEngineView_PeriodReturn = QWebEngineView(self.tab_2)
        self.QWebEngineView_PeriodReturn.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineView_PeriodReturn.setObjectName(
            "QWebEngineView_PeriodReturn")
        self.horizontalLayout.addWidget(self.QWebEngineView_PeriodReturn)
        self.tabWidget.addTab(self.tab_2, "")

        self.tab_3 = QtWidgets.QWidget()
        self.tab_3.setObjectName("tab_3")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.tab_3)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.QWebEngineView_LagestBack = QWebEngineView(self.tab_3)
        self.QWebEngineView_LagestBack.setStyleSheet(
            "background-color: rgb(170, 170, 127);")
        self.QWebEngineView_LagestBack.setObjectName(
            "QWebEngineView_LagestBack")
        self.verticalLayout.addWidget(self.QWebEngineView_LagestBack)
        self.tabWidget.addTab(self.tab_3, "")
        self.verticalLayout_3.addWidget(self.tabWidget)
        self.horizontalLayout_2.addLayout(self.verticalLayout_3)
        self.horizontalLayout_3.addLayout(self.horizontalLayout_2)
        self.scrollArea.setWidget(self.scrollAreaWidgetContents)
        self.horizontalLayout_4.addWidget(self.scrollArea)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(1)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "基金量化投研系统v0.11"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab),
                                  _translate("MainWindow", "月度收益"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2),
                                  _translate("MainWindow", "区间收益"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3),
                                  _translate("MainWindow", "回撤情况"))
コード例 #32
0
class Ui_FieldSelector(object):
    def setupUi(self, FieldSelector):
        FieldSelector.setObjectName("FieldSelector")
        FieldSelector.resize(964, 923)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/images/images/selector.png"),
                       QtGui.QIcon.Normal, QtGui.QIcon.Off)
        FieldSelector.setWindowIcon(icon)
        FieldSelector.setSizeGripEnabled(True)
        FieldSelector.setModal(True)
        self.gridLayout_2 = QtWidgets.QGridLayout(FieldSelector)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.webView = QWebView(FieldSelector)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.webView.sizePolicy().hasHeightForWidth())
        self.webView.setSizePolicy(sizePolicy)
        self.webView.setMouseTracking(True)
        self.webView.setUrl(QtCore.QUrl("about:blank"))
        self.webView.setObjectName("webView")
        self.gridLayout_2.addWidget(self.webView, 1, 0, 1, 2)
        self.textualFrame = QtWidgets.QFrame(FieldSelector)
        self.textualFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.textualFrame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.textualFrame.setObjectName("textualFrame")
        self.gridLayout_5 = QtWidgets.QGridLayout(self.textualFrame)
        self.gridLayout_5.setObjectName("gridLayout_5")
        self.label_4 = QtWidgets.QLabel(self.textualFrame)
        self.label_4.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.label_4.setFrameShadow(QtWidgets.QFrame.Plain)
        self.label_4.setLineWidth(0)
        self.label_4.setAlignment(QtCore.Qt.AlignRight
                                  | QtCore.Qt.AlignTrailing
                                  | QtCore.Qt.AlignVCenter)
        self.label_4.setObjectName("label_4")
        self.gridLayout_5.addWidget(self.label_4, 0, 0, 1, 1)
        self.textualComboBox = QtWidgets.QComboBox(self.textualFrame)
        self.textualComboBox.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.textualComboBox.sizePolicy().hasHeightForWidth())
        self.textualComboBox.setSizePolicy(sizePolicy)
        self.textualComboBox.setEditable(False)
        self.textualComboBox.setDuplicatesEnabled(False)
        self.textualComboBox.setObjectName("textualComboBox")
        self.gridLayout_5.addWidget(self.textualComboBox, 0, 1, 1, 1)
        self.label_3 = QtWidgets.QLabel(self.textualFrame)
        self.label_3.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.label_3.setFrameShadow(QtWidgets.QFrame.Raised)
        self.label_3.setAlignment(QtCore.Qt.AlignRight
                                  | QtCore.Qt.AlignTrailing
                                  | QtCore.Qt.AlignVCenter)
        self.label_3.setObjectName("label_3")
        self.gridLayout_5.addWidget(self.label_3, 1, 0, 1, 1)
        self.textcolComboBox = QtWidgets.QComboBox(self.textualFrame)
        self.textcolComboBox.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(
            QtWidgets.QSizePolicy.MinimumExpanding,
            QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.textcolComboBox.sizePolicy().hasHeightForWidth())
        self.textcolComboBox.setSizePolicy(sizePolicy)
        self.textcolComboBox.setEditable(True)
        self.textcolComboBox.setObjectName("textcolComboBox")
        self.gridLayout_5.addWidget(self.textcolComboBox, 1, 1, 1, 1)
        self.gridLayout_2.addWidget(self.textualFrame, 4, 0, 1, 1)
        self.url = QtWidgets.QLineEdit(FieldSelector)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.url.sizePolicy().hasHeightForWidth())
        self.url.setSizePolicy(sizePolicy)
        self.url.setReadOnly(True)
        self.url.setObjectName("url")
        self.gridLayout_2.addWidget(self.url, 0, 0, 1, 2)
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.tagCheckBox = QtWidgets.QCheckBox(FieldSelector)
        self.tagCheckBox.setEnabled(False)
        font = QtGui.QFont()
        font.setPointSize(9)
        self.tagCheckBox.setFont(font)
        self.tagCheckBox.setChecked(True)
        self.tagCheckBox.setObjectName("tagCheckBox")
        self.gridLayout.addWidget(self.tagCheckBox, 4, 1, 1, 1)
        self.idCheckBox = QtWidgets.QCheckBox(FieldSelector)
        self.idCheckBox.setEnabled(False)
        font = QtGui.QFont()
        font.setPointSize(9)
        self.idCheckBox.setFont(font)
        self.idCheckBox.setChecked(True)
        self.idCheckBox.setObjectName("idCheckBox")
        self.gridLayout.addWidget(self.idCheckBox, 4, 2, 1, 1)
        self.classCheckBox = QtWidgets.QCheckBox(FieldSelector)
        self.classCheckBox.setEnabled(False)
        font = QtGui.QFont()
        font.setPointSize(9)
        self.classCheckBox.setFont(font)
        self.classCheckBox.setChecked(True)
        self.classCheckBox.setObjectName("classCheckBox")
        self.gridLayout.addWidget(self.classCheckBox, 4, 3, 1, 1)
        self.numElecomboBox = QtWidgets.QComboBox(FieldSelector)
        self.numElecomboBox.setEnabled(False)
        self.numElecomboBox.setObjectName("numElecomboBox")
        self.numElecomboBox.addItem("")
        self.gridLayout.addWidget(self.numElecomboBox, 4, 5, 1, 1)
        self.backButton = QtWidgets.QPushButton(FieldSelector)
        self.backButton.setMaximumSize(QtCore.QSize(100, 16777215))
        self.backButton.setAutoDefault(False)
        self.backButton.setDefault(False)
        self.backButton.setObjectName("backButton")
        self.gridLayout.addWidget(self.backButton, 4, 6, 1, 1)
        self.nextButton = QtWidgets.QPushButton(FieldSelector)
        self.nextButton.setEnabled(True)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.nextButton.sizePolicy().hasHeightForWidth())
        self.nextButton.setSizePolicy(sizePolicy)
        self.nextButton.setMaximumSize(QtCore.QSize(100, 16777215))
        self.nextButton.setFocusPolicy(QtCore.Qt.StrongFocus)
        self.nextButton.setCheckable(False)
        self.nextButton.setChecked(False)
        self.nextButton.setAutoDefault(False)
        self.nextButton.setFlat(False)
        self.nextButton.setObjectName("nextButton")
        self.gridLayout.addWidget(self.nextButton, 4, 7, 1, 1)
        self.additionTagLineEdit = QtWidgets.QLineEdit(FieldSelector)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.additionTagLineEdit.sizePolicy().hasHeightForWidth())
        self.additionTagLineEdit.setSizePolicy(sizePolicy)
        self.additionTagLineEdit.setObjectName("additionTagLineEdit")
        self.gridLayout.addWidget(self.additionTagLineEdit, 4, 4, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout, 2, 0, 1, 2)
        self.sourceText = QtWidgets.QPlainTextEdit(FieldSelector)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Minimum)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.sourceText.sizePolicy().hasHeightForWidth())
        self.sourceText.setSizePolicy(sizePolicy)
        self.sourceText.setObjectName("sourceText")
        self.gridLayout_2.addWidget(self.sourceText, 3, 0, 1, 2)
        self.gridLayout_3 = QtWidgets.QGridLayout()
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.state = QtWidgets.QLabel(FieldSelector)
        self.state.setText("")
        self.state.setObjectName("state")
        self.gridLayout_3.addWidget(self.state, 0, 0, 1, 1)
        self.warnLabel = QtWidgets.QLabel(FieldSelector)
        self.warnLabel.setMinimumSize(QtCore.QSize(0, 20))
        self.warnLabel.setText("")
        self.warnLabel.setObjectName("warnLabel")
        self.gridLayout_3.addWidget(self.warnLabel, 1, 0, 1, 1)
        self.progressBar = QtWidgets.QProgressBar(FieldSelector)
        self.progressBar.setMaximumSize(QtCore.QSize(16777215, 30))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.progressBar.setFont(font)
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("progressBar")
        self.gridLayout_3.addWidget(self.progressBar, 2, 0, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout_3, 5, 0, 1, 2)
        self.extractFrame = QtWidgets.QFrame(FieldSelector)
        self.extractFrame.setEnabled(False)
        self.extractFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.extractFrame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.extractFrame.setObjectName("extractFrame")
        self.gridLayout_7 = QtWidgets.QGridLayout(self.extractFrame)
        self.gridLayout_7.setObjectName("gridLayout_7")
        self.widget = QtWidgets.QWidget(self.extractFrame)
        self.widget.setObjectName("widget")
        self.gridLayout_4 = QtWidgets.QGridLayout(self.widget)
        self.gridLayout_4.setObjectName("gridLayout_4")
        self.textExtraction = QtWidgets.QRadioButton(self.widget)
        self.textExtraction.setEnabled(False)
        self.textExtraction.setChecked(True)
        self.textExtraction.setObjectName("textExtraction")
        self.gridLayout_4.addWidget(self.textExtraction, 0, 0, 1, 1)
        self.sourceExtraction = QtWidgets.QRadioButton(self.widget)
        self.sourceExtraction.setObjectName("sourceExtraction")
        self.gridLayout_4.addWidget(self.sourceExtraction, 1, 0, 1, 1)
        self.gridLayout_7.addWidget(self.widget, 0, 0, 1, 1)
        self.widget_2 = QtWidgets.QWidget(self.extractFrame)
        self.widget_2.setObjectName("widget_2")
        self.gridLayout_6 = QtWidgets.QGridLayout(self.widget_2)
        self.gridLayout_6.setObjectName("gridLayout_6")
        self.selectedExtraction = QtWidgets.QRadioButton(self.widget_2)
        self.selectedExtraction.setChecked(True)
        self.selectedExtraction.setObjectName("selectedExtraction")
        self.gridLayout_6.addWidget(self.selectedExtraction, 0, 0, 1, 1)
        self.inverseExtraction = QtWidgets.QRadioButton(self.widget_2)
        self.inverseExtraction.setObjectName("inverseExtraction")
        self.gridLayout_6.addWidget(self.inverseExtraction, 1, 0, 1, 1)
        self.gridLayout_7.addWidget(self.widget_2, 0, 1, 1, 1)
        self.newcolumnButton = QtWidgets.QPushButton(self.extractFrame)
        self.newcolumnButton.setEnabled(False)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed,
                                           QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(
            self.newcolumnButton.sizePolicy().hasHeightForWidth())
        self.newcolumnButton.setSizePolicy(sizePolicy)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/images/images/newColumn.png"),
                        QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.newcolumnButton.setIcon(icon1)
        self.newcolumnButton.setIconSize(QtCore.QSize(36, 36))
        self.newcolumnButton.setAutoDefault(True)
        self.newcolumnButton.setFlat(False)
        self.newcolumnButton.setObjectName("newcolumnButton")
        self.gridLayout_7.addWidget(self.newcolumnButton, 0, 2, 1, 1)
        self.gridLayout_2.addWidget(self.extractFrame, 4, 1, 1, 1)
        self.sourceText.raise_()
        self.textualFrame.raise_()
        self.url.raise_()
        self.webView.raise_()
        self.extractFrame.raise_()
        self.label_4.setBuddy(self.textualComboBox)
        self.label_3.setBuddy(self.textcolComboBox)

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

    def retranslateUi(self, FieldSelector):
        _translate = QtCore.QCoreApplication.translate
        FieldSelector.setWindowTitle(
            _translate("FieldSelector", "Gromoteur - Field Selector"))
        self.webView.setStatusTip(
            _translate(
                "FieldSelector",
                "click to select desired content, scroll with mouse wheel"))
        self.label_4.setText(
            _translate("FieldSelector", "Te&xtualization Name:"))
        self.label_3.setText(_translate("FieldSelector", "Column &Name:"))
        self.tagCheckBox.setText(_translate("FieldSelector", "tag"))
        self.idCheckBox.setText(_translate("FieldSelector", "id"))
        self.classCheckBox.setText(_translate("FieldSelector", "class"))
        self.numElecomboBox.setItemText(0, _translate("FieldSelector", "all"))
        self.backButton.setText(_translate("FieldSelector", "previous"))
        self.nextButton.setText(_translate("FieldSelector", "next"))
        self.additionTagLineEdit.setToolTip(
            _translate("FieldSelector", "additional tag"))
        self.textExtraction.setText(_translate("FieldSelector", "text"))
        self.sourceExtraction.setText(_translate("FieldSelector", "source"))
        self.selectedExtraction.setText(
            _translate("FieldSelector", "se&lected"))
        self.inverseExtraction.setText(_translate("FieldSelector", "in&verse"))
        self.newcolumnButton.setText(
            _translate("FieldSelector", "extract\n"
                       "into separate column"))