コード例 #1
0
ファイル: MapWidget.py プロジェクト: jordynmarlow/DataScience
class MapWidget(QWidget):
    def __init__(self, parent: typing.Optional['QWidget']) -> None:
        super().__init__(parent=parent)
        self.ui()

    def ui(self):

        self.left = 50 * 2
        self.top = 50 * 2
        self.width = 640
        self.height = 480

        # self.setGeometry(self.left,self.top,self.width,self.height)

        # -------------------------
        # init map widget
        # -------------------------
        fMap = folium.Map(location=[user_lat, user_lon],
                          tiles='Stamen Terrain',
                          default_zoom_start=15)
        for _, row in hospitals_df.iterrows():
            folium.Marker(location=[row['lat'], row['lon']]).add_to(fMap)

        data = io.BytesIO()
        fMap.save(data, close_file=False)

        self.map_widget = QWebEngineView(self)
        self.map_widget.resize(410, 460)
        # self.map_widget.move(5, 5)
        self.map_widget.setHtml(data.getvalue().decode())

        self.show()
コード例 #2
0
ファイル: printer_handler.py プロジェクト: Tr0ub1e/Izbushka
    def run(self):

        import sys

        QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
        app = QApplication(sys.argv)
        app.setApplicationName("Previewer")

        view = QWebEngineView()

        file = 'res.html'
        folder = os.path.dirname(os.path.realpath(__file__))
        path = os.path.join(folder, file)
        page_ = QUrl.fromLocalFile(path)

        view.setUrl(page_)
        view.resize(1024, 750)
        view.show()

        handler = PrintHandler()
        handler.setPage(view.page())

        printPreviewShortCut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_P),
                                         view)
        printShortCut = QShortcut(QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_P),
                                  view)

        printPreviewShortCut.activated.connect(handler.printPreview)
        printShortCut.activated.connect(handler.print)

        sys.exit(app.exec_())
コード例 #3
0
class Window(QWidget):
    title_name = init.窗口标题
    url = init.url地址

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

        # 获取屏幕分辩率
        self.desktop = QApplication.desktop()
        self.width = self.desktop.screenGeometry().width()
        self.height = self.desktop.screenGeometry().height()

        # 设置窗口
        self.setWindowTitle(self.title_name)
        self.resize(self.width, self.height)
        self.setMinimumSize(init.最小宽度, init.最小高度)

        # 设置web控件
        self.web = QWebEngineView(self)
        self.web.resize(self.width, self.height)
        self.web.load(QUrl(self.url))

    def resizeEvent(self, event):
        '''监听窗口尺寸
        当窗口尺寸变化时, 就会触发此方法
        Agrs:
            event: PyQt5.QtGui.QResizeEvent object
        '''
        self.width = event.size().width()
        self.height = event.size().height()

        self.web.resize(self.width, self.height)
コード例 #4
0
class Context(QWidget, Ui_Form):
    def __init__(self, update_signal, main_path):
        super().__init__()
        self.setupUi(self)
        self.main_path = main_path
        self.splitter.setSizes([200, 300])
        self.update_signal = update_signal
        self.tableWidget.set_signal(update_signal)
        # self._init_table()
        self.df = self.tableWidget.load_data_from_db()
        self._web_init()

    def _web_init(self):
        render_df_html(self.df)
        self.view = QWebEngineView()
        # self.scrollArea.setWidget(self.view)
        # todo 尺寸修改
        # self.view.resize(self.label.width(), self.label.height())
        # print(self.scrollAreaWidgetContents.geometry())
        # self.view.setGeometry(self.scrollAreaWidgetContents.geometry())
        self.view.resize(800, 800)
        # print(self.scrollArea.geometry())
        # print(self.view.geometry())
        # self.index = './data/template.html'
        # self.index = "./mytest/render.html"
        # self.index = "./mytest/pie_set_color.html"
        # self.index = "./mytest/pie_base.html"
        self.index = "./pie_base.html"
        # self.index = "./template.html"
        # self.index = "./mytest/multiple_pie.html"
        html_path = QFileInfo(self.index).absoluteFilePath()
        # print(html_path)
        self.url = QUrl("file:///" + html_path)
        self.view.load(self.url)
        self.scrollArea.setWidget(self.view)

    def reload_url(self):
        self.tableWidget.not_start = True
        self.df = self.tableWidget.load_data_from_db()
        render_df_html(self.df)
        # 高分屏自适应
        html_path = "./pie_base.html"
        html_path = QFileInfo(html_path).absoluteFilePath()
        self.url = QUrl("file:///" + html_path)
        self.view.load(self.url)

    def del_one_item(self):
        num = len(self.tableWidget.selectedItems())
        if num == 0:
            pass
        else:
            connect = DBOperation.get_instance()
            # print(self.tableWidget.selectedItems()[0].row())
            # print(self.tableWidget.selectedItems()[0].text())
            row_num = self.tableWidget.selectedItems()[0].row()
            id = self.tableWidget.item(row_num, 0).text()
            # print("id: {}".format(id))
            connect.delete_one(id)
            connect.commit()
            self.update_signal.emit()
コード例 #5
0
    def __init__(self):
        super().__init__()

        self.setGeometry(0, 0, 1024, 768)

        #self.setStyleSheet("background:black")
        chart = QWebEngineView(self)
        chart.page().setBackgroundColor(Qt.red)
        #button = QPushButton("Test",self)
        #button.resize(50, 50)
        #self.col = QColor(0, 0, 0)
        chart.resize(self.size())
        chart.setAutoFillBackground(True)
        """
        button.setAutoFillBackground(True)
        pa = QPalette()
        #br = pa.dark()
        pa.setColor(QPalette.Window, Qt.red)
        pa.setColor(QPalette.WindowText, Qt.red)
        button.setPalette(pa)

        button.setAutoFillBackground(True)
"""

        self.center()
        self.show()
コード例 #6
0
ファイル: window.py プロジェクト: edzai/visma
 def popupBrowser(self):
     w = QDialog(self)
     w.resize(600, 500)
     w.setWindowTitle('Wiki')
     web = QWebEngineView(w)
     web.load(QUrl('https://github.com/aerospaceresearch/visma/wiki'))
     web.resize(600, 500)
     web.show()
     w.show()
コード例 #7
0
    def __init__(self):
        super().__init__(parent=None)

        browser = QWebEngineView(parent=self)
        page = browser.setUrl(QUrl("http://web.de"))
        # browser.show()

        browser.resize(800, 600)
        self.resize(800, 600)
コード例 #8
0
 def init_widget(self):
     self.setWindowTitle("QWebEngineView")
     # QWebEngineView 를 이용하여 웹 페이지를 표출
     web = QWebEngineView()
     web.resize(120, 120)
     # url 의 페이지를 가져오기
     # web.setUrl(QUrl(self.url))
     web.setUrl(QUrl(self.img_url))
     self.form_layout.addWidget(web)
コード例 #9
0
class window(QWidget):
    def __init__(self):
        super().__init__()
        self.setup()

    def setup(self):
        self.flag = False
        self.box = QVBoxLayout(self)  # 创建一个垂直布局来放控件''
        #添加收货地址页面,运行页面js
        #人工校验地址成功后,进入商品页面
        self.btn_a = QPushButton('淘宝')
        self.btn_a.clicked.connect(self.to_a)
        self.btn_b = QPushButton('百度')
        self.btn_b.clicked.connect(self.to_b)
        self.btn_get = QPushButton('get')
        self.btn_get.setVisible(False)
        self.btn_get.clicked.connect(self.get)
        self.btn_start = QPushButton('启动')
        self.btn_start.clicked.connect(self.start)
        self.web = QWebEngineView()  # 创建浏览器组件对象
        self.web.resize(1200, 900)  # 设置大小
        self.web.load(QUrl("https://www.baidu.com"))  # 打开页面
        self.box.addWidget(self.btn_a)
        self.box.addWidget(self.btn_b)
        self.box.addWidget(self.btn_get)
        self.box.addWidget(self.btn_start)
        self.box.addWidget(self.web)  # 再放浏览器
        self.web.show()  # 最后让页面显示出来
        self.setWindowTitle("贝贝拍单工具")

    #进入商品购买页面
    def to_a(self):
        self.web.load(QUrl("http://www.taobao.com"))
        #self.btn_get.click()
    def to_b(self):
        self.web.load(QUrl("http://www.baidu.com"))
        #self.btn_get.click()

    def get(self):
        self.web.page().toHtml(self.sku_html)

    def start(self):
        if self.flag:
            self.flag = False
        else:
            self.flag = True

    #将sku页面信息的内容赋值给窗体对象
    def sku_html(self, html):
        if html.find("www.baidu.com") != -1:
            print("www.baidu.com")
        else:
            print("www.taobao.com")
コード例 #10
0
ファイル: frameui.py プロジェクト: wl55387370/JMTOOL
def run(p='.'):
    app = QApplication(sys.argv)
    view = QWebEngineView()
    channel = QWebChannel()
    handler = monkey.op()
    channel.registerObject('pyjs', handler)
    view.page().setWebChannel(channel)
    url_string = p + "/lib/pages/index.html"
    view.load(QUrl(url_string))
    view.resize(1366, 880)
    view.show()
    sys.exit(app.exec_())
コード例 #11
0
    def __init__(self):
        super().__init__()

        # # GUI
        my_web = QWebEngineView()

        dir_path = Path(__file__).resolve().parent
        file = dir_path/'playground/index.html'

        self.layout().addWidget(my_web)
        my_web.resize(1100, 700)
        my_web.load(QUrl().fromLocalFile(str(file)))
コード例 #12
0
def main() -> None:
    import sys

    QCoreApplication.setOrganizationName("QtExamples")
    QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    app = QApplication(sys.argv)

    view = QWebEngineView()
    view.setUrl(commandLineUrlArgument())
    view.resize(1024, 750)
    view.show()

    sys.exit(app.exec_())
コード例 #13
0
def track1():
    f = open('./shapefile/date.txt','w')
    file_path = os.listdir('./csv/')
    file_path.sort(reverse=True)
    file_path = './csv/'+file_path[0]
    f = csv.reader(open(file_path,'r'))
    for i in f:
        if 'id' in i[0]:
            continue
        cb.addItem(str(i[0])+' '+i[1]+' '+i[2]+' '+i[3]+' '+i[4]+' '+i[5])  #把字符串转化为QListWidgetItem项目对象
    tem = cb.currentText()
    tem = tem.split(' ')
    pid = int(float(tem[0]))
    post_date = tem[-2]
    pre_date = tem[-1]
    post_end = datetime.datetime.strptime(post_date,"%Y%m%d")
    n_days_after = post_end - datetime.timedelta(days=-5)
    dc_end = n_days_after.strftime("%Y%m%d")
    pre_end = datetime.datetime.strptime(pre_date,"%Y%m%d")
    n_days_before = pre_end - datetime.timedelta(days=5)
    dc_start = n_days_before.strftime("%Y%m%d")
    response = requests.get('https://js-157-200.jetstream-cloud.org/ModelofModels/gis_output/flood_warning_'+post_date+'.zip')
    _tmp_file = tempfile.TemporaryFile()
    _tmp_file.write(response.content)
    zf = zipfile.ZipFile(_tmp_file, mode='r')
    if os.path.exists('./zip') == False:
        os.mkdir('./zip')
    for names in zf.namelist():
        f = zf.extract(names, './zip')  # 解压到zip目录文件下
    zf.close()
    shpdata = gpd.GeoDataFrame.from_file('./zip/flood_warning_'+post_date+'.shp')
    shpdata = shpdata.loc[shpdata['pfaf_id'] == pid]
    shpdata.to_file('./shapefile/Polygon.shp',driver='ESRI Shapefile',encoding='utf-8')
    a = shpdata["geometry"]
    a = str(a).split(',')
    a = a[0].split('((')[1]
    a = a.split(' ')
    print([float(a[0]), float(a[1])])
    m = folium.Map(location=[float(a[0]), float(a[1])], tiles="cartodbpositron", zoom_start=7)
    folium.GeoJson(data=shpdata["geometry"]).add_to(m)
    data = io.BytesIO()
    m.save(data, close_file=False)
    w1 = QWebEngineView()
    w1.setHtml(data.getvalue().decode())
    w1.resize(640, 480)
    label_obj1.setText('please choose your interested area')
    layout.replaceWidget(w,w1)
    layout.update()
    win.update()
コード例 #14
0
def draw():
    m = folium.Map(location=[55.8527, 37.5689], zoom_start=13)
    draw = Draw(export=True,filename='footprint.geojson',position='bottomright',draw_options={'polyline':False,'rectangle':True,'polygon':True,'circle':False,'marker':True,'circlemarker':False},edit_options={'edit':False})
    m.add_child(draw)
    data = io.BytesIO()
    m.save(data, close_file=False)
    w1 = QWebEngineView()
    w1.setHtml(data.getvalue().decode())
    w1.resize(640, 480)
    layout.replaceWidget(w,w1)
    label_obj1.setText(u"please input search date like YYYYmmdd:")
    line_edit_obj1 = QLineEdit()        # 单行编辑框
    line_edit_obj1.textChanged[str].connect(onChanged)
    layout.replaceWidget(cb,line_edit_obj1)
    layout.update()
    win.update()
コード例 #15
0
class Mapa():

    def __init__(self, direcciones):
        self.browser = QWebEngineView()
        self.browser.resize(500,500)
        self.profile = QWebEngineProfile('storage', self.browser)
        self.webpage = QWebEnginePage(self.profile, self.browser)
        self.browser.setPage(self.webpage)
        m = MapaUrl()
        m.tipomapa(0)
        m.set_marcadores(direcciones)
        #url = m.get_url()
        url = m.mapa_dinamico()
        print(url)

        self.browser.load(QUrl(url))
        self.browser.show()
コード例 #16
0
class window(QWidget):
    def __init__(self):
        super().__init__()
        self.setup()

    def setup(self):
        self.flag = False
        self.box = QVBoxLayout(self)  # 创建一个垂直布局来放控件''
        #添加收货地址页面,运行页面js
        #人工校验地址成功后,进入商品页面
        self.btn_close = QPushButton('关闭')
        self.btn_close.clicked.connect(self.close)
        self.btn_start = QPushButton('启动')
        self.btn_start.clicked.connect(self.start)

        self.web = QWebEngineView()  # 创建浏览器组件对象
        self.btn_delete = QPushButton('清理收货地址')
        self.btn_delete.clicked.connect(self.delete_address)
        self.btn_delete.setShortcut('Enter')
        self.web.resize(1200, 900)  # 设置大小
        self.web.load(QUrl(url))  # 打开页面
        self.box.addWidget(self.btn_close)
        self.box.addWidget(self.btn_start)
        self.box.addWidget(self.web)  # 再放浏览器
        self.box.addWidget(self.btn_delete)
        self.web.show()  # 最后让页面显示出来
        self.setWindowTitle("贝贝拍单工具")

    #进入商品购买页面
    def btn_close(self):
        self.flag = False

    def start(self):
        self.flag = True

    #将sku页面信息的内容赋值给窗体对象
    def delete_address(self):
        js_string = '''
           var spans = document.getElementsByClassName("t-delete");
           spans[0].click();
           setTimeout(function(){
              var btn = document.getElementsByClassName("next-dialog-btn")[0].click();
           },2000)

        '''
        self.web.page().runJavaScript(js_string)
コード例 #17
0
def main(api_endpoint, credentials, device_model_id, device_id, lang, query,
         verbose, grpc_deadline, *args, **kwargs):

    logging.basicConfig(level=logging.DEBUG if verbose else logging.INFO)

    try:
        with open(credentials, 'r') as f:
            credentials = google.oauth2.credentials.Credentials(token=None,
                                                                **json.load(f))
            http_request = google.auth.transport.requests.Request()
            credentials.refresh(http_request)
    except Exception as e:
        logging.error('Error loading credentials: %s', e)
        logging.error('Run google-oauthlib-tool to initialize '
                      'new OAuth 2.0 credentials.')
        return

    grpc_channel = google.auth.transport.grpc.secure_authorized_channel(
        credentials, http_request, api_endpoint)
    logging.info('Connecting to %s', api_endpoint)

    with TextAssistant(lang, query, device_model_id, device_id, True,
                       grpc_channel, grpc_deadline) as assistant:
        response_text, response_html = assistant.assist(text_query=query)
        html_file = open(
            "{}/html/index.html".format(
                os.path.dirname(os.path.abspath(__file__))), "w")
        html_file.write(response_html.decode('utf-8'))
        html_file.close()
        web_app = QApplication(sys.argv)
        web_view = QWebEngineView()
        web_view.load(
            QUrl.fromLocalFile('{}/html/index.html'.format(
                os.path.dirname(os.path.abspath(__file__)))))
        web_view.setZoomFactor(web_view.zoomFactor() * 0.4)
        web_view.resize(700, 350)
        web_view.setWindowTitle('Micno with Assistant')
        desktop = web_app.desktop()
        geometry = desktop.screenGeometry()
        framesize = web_view.frameSize()
        web_view.move(geometry.width() - framesize.width(),
                      geometry.height() - framesize.height())
        web_view.show()
        web_app.exec()
コード例 #18
0
    def run(self):
        url = 'http://marekmansell.sk/test/blockly/'
        url = 'file://' + os.path.abspath(os.path.join('blockly',
                                                       'index.html'))
        app = QApplication([])
        editor_window = EditorWindow()

        layout = QVBoxLayout()

        browser = QWebEngineView(editor_window)
        layout.addWidget(browser)
        browser.resize(x_size - 50, y_size)
        page = WebPage(browser, self.event)
        browser.setPage(page)

        browser.load(QUrl(url))
        browser.show()

        editor_window.btn.clicked.connect(lambda: get_code(browser))
        sys.exit(app.exec_())
コード例 #19
0
class Principal(QMainWindow):
    def __init__(self):
        super().__init__()
        loadUi("prueba.ui", self)
        self.browser = QWebEngineView()
        self.browser.resize(500, 500)

        m = MapaUrl()
        m.tipomapa(0)

        lista = ['argentina', 'brasil', 'cuba']
        lista2 = ['españa', 'japon', 'italia', 'rusia']

        m.set_marcadores(lista, lista2)
        m.set_camino(lista, lista2)
        url = m.get_url()
        print(url)

        self.browser.load(QUrl(url))
        self.browser.show()
コード例 #20
0
def main():
    import sys

    QCoreApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
    app = QApplication(sys.argv)

    view = QWebEngineView()
    view.setUrl(QUrl("qrc:/index.html"))
    view.resize(1024, 750)
    view.show()

    handler = PrintHandler()
    handler.setPage(view.page())

    printPreviewShortCut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_P), view)
    printShortCut = QShortcut(QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_P), view)

    printPreviewShortCut.activated.connect(handler.printPreview)
    printShortCut.activated.connect(handler.print)

    sys.exit(app.exec_())
コード例 #21
0
class Main(QWidget):
    """Classe représentant les options de configuration de GRUB"""
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)

        # create a process
        exePath = "C:\\Program Files\\Blender Foundation\\Blender 2.81\\blender.exe"
        subprocess.Popen(exePath)

        # Temps démarrage FreeCad
        time.sleep(3)

        hwnd = win32gui.FindWindowEx(0, 0, 0, "Blender")

        window = QWindow.fromWinId(hwnd)
        self.container = self.createWindowContainer(window)
        self.setGeometry(100, 100, 1024, 768)

        #layout = QVBoxLayout(self)
        layout = QHBoxLayout(self)
        layout.addWidget(self.container)

        self.webEngineView = QWebEngineView()
        self.webEngineView.resize(100, 500)
        self.loadPage()

        self.setLayout(layout)

        layout.addWidget(self.webEngineView)

        self.show()

    def loadPage(self):

        with open('page.html', 'r') as f:

            html = f.read()
            self.webEngineView.setHtml(html)
コード例 #22
0
ファイル: signin.py プロジェクト: makeitokay/OkayMoney
class SignInDialog(QDialog):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Вход через VK")
        self.setWindowIcon(QIcon("ui/vk_icon.png"))

        self.user_id = None
        self.access_token = None
        self.app_token = None

        self.setFixedSize(800, 600)
        self.web_engine = QWebEngineView(self)
        self.web_engine.resize(self.width(), self.height())
        url = ("https://oauth.vk.com/authorize?"
               "client_id=6975005"
               "&redirect_uri=http://okaymoney.pythonanywhere.com/vk"
               "&response_type=code"
               "&v=5.95"
               "&revoke=1")
        self.web_engine.setUrl(QUrl(url))
        self.web_engine.loadFinished.connect(self.check_user_id)

    def check_user_id(self):
        if (self.web_engine.url().toString().startswith(
                "http://okaymoney.pythonanywhere.com/vk")):
            self.web_engine.page().toPlainText(self.get_plain_text)

    def get_plain_text(self, text):
        response = json.loads(text)
        self.user_id = response.get("user_id")
        self.access_token = response.get("access_token")
        self.app_token = response.get("app_token")
        self.close()

    def exec(self):
        super().exec()
        return self.user_id, self.access_token, self.app_token
コード例 #23
0
    class WebBrowser( QDialog ):

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

            screen = QApplication.desktop().screenGeometry()

            self._setupProxy()

            self._page = WebPage()

            self._browser = QWebEngineView( parent=self )
            self._browser.setPage( self._page )
            self._browser.resize( screen.width( ) / 4 * 3,
                                  screen.height() / 4 * 3 )

            self._browser.setWindowTitle( windowTitle )


        def open( self, url ):
            logging.info( 'opening %s', url )

            self._page.load( QUrl( url ) )

            self.show()


        def _setupProxy( self ):
            # TODO: move proxy settings to ToolBOS.conf

            proxy = QNetworkProxy( )
            proxy.setType( QNetworkProxy.HttpProxy )
            proxy.setHostName( 'hri-proxy.honda-ri.de' )
            proxy.setPort( 3128 )

            QNetworkProxy.setApplicationProxy( proxy )
コード例 #24
0
class Window(QWidget):
    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)
        self.resize(600, 400)
        layout = QHBoxLayout(self)

        # 左侧
        widgetLeft = QWidget(self)
        layoutLeft = QVBoxLayout(widgetLeft)
        # 右侧
        self.widgetRight = QListWidget(self,
                                       minimumWidth=200,
                                       iconSize=QSize(150, 150))
        self.widgetRight.setViewMode(QListWidget.IconMode)
        layout.addWidget(widgetLeft)
        layout.addWidget(self.widgetRight)

        self.webView = QWebEngineView()
        layoutLeft.addWidget(self.webView)

        # 截图方式一
        groupBox1 = QGroupBox('截图方式一', self)
        layout1 = QVBoxLayout(groupBox1)
        layout1.addWidget(QPushButton('截图1', self, clicked=self.onScreenShot1))
        layoutLeft.addWidget(groupBox1)

        # 截图方式二(采用js)
        groupBox2 = QGroupBox('截图方式二', self)
        layout2 = QVBoxLayout(groupBox2)
        self.codeEdit = QLineEdit(
            'body',
            groupBox2,
            placeholderText='请输入需要截图的元素、ID或者class:如body、#id .class')
        layout2.addWidget(self.codeEdit)
        self.btnMethod2 = QPushButton('',
                                      self,
                                      clicked=self.onScreenShot2,
                                      enabled=False)
        layout2.addWidget(self.btnMethod2)
        layoutLeft.addWidget(groupBox2)

        # 提供访问接口
        self.channel = QWebChannel(self)
        # 把自身对象传递进去
        self.channel.registerObject('_self', self)
        # 设置交互接口
        self.webView.page().setWebChannel(self.channel)
        # 支持截图
        settings = QWebEngineSettings.globalSettings()
        settings.setAttribute(QWebEngineSettings.ScreenCaptureEnabled, True)
        self.webView.loadStarted.connect(self.onLoadStarted)
        self.webView.loadFinished.connect(self.onLoadFinished)
        self.webView.load(QUrl("https://pyqt.site"))

    def onLoadStarted(self):
        print('load started')
        self.btnMethod2.setEnabled(False)
        self.btnMethod2.setText('暂时无法使用(等待页面加载完成)')

    @pyqtSlot(bool)
    def onLoadFinished(self, finished):
        if not finished:
            return
        print('load finished')
        # 注入脚本
        page = self.webView.page()
        # 执行qwebchannel,jquery,promise,html2canvas
        page.runJavaScript(open('Data/qwebchannel.js', 'rb').read().decode())
        page.runJavaScript(open('Data/jquery.js', 'rb').read().decode())
        #         page.runJavaScript(
        #             open('Data/promise-7.0.4.min.js', 'rb').read().decode())
        page.runJavaScript(
            open('Data/html2canvas.min.js', 'rb').read().decode())
        page.runJavaScript(CreateBridge)
        print('inject js ok')
        self.btnMethod2.setText('截图2')
        self.btnMethod2.setEnabled(True)

    def onScreenShot1(self):
        # 截图方式1
        page = self.webView.page()
        oldSize = self.webView.size()
        self.webView.resize(page.contentsSize().toSize())

        def doScreenShot():
            rect = self.webView.contentsRect()
            size = rect.size()
            image = QImage(size, QImage.Format_ARGB32_Premultiplied)
            image.fill(Qt.transparent)

            painter = QPainter()
            painter.begin(image)
            painter.setRenderHint(QPainter.Antialiasing, True)
            painter.setRenderHint(QPainter.TextAntialiasing, True)
            painter.setRenderHint(QPainter.SmoothPixmapTransform, True)

            self.webView.render(painter)
            painter.end()
            self.webView.resize(oldSize)

            # 添加到左侧list中
            item = QListWidgetItem(self.widgetRight)
            image = QPixmap.fromImage(image)
            item.setIcon(QIcon(image))
            item.setData(Qt.UserRole + 1, image)

        # 先等一下再截图吧
        QTimer.singleShot(2000, doScreenShot)

    def onScreenShot2(self):
        # 截图方式2
        code = self.codeEdit.text().strip()
        if not code:
            return
        self.progressdialog = QProgressDialog(self, windowTitle='正在截图中')
        self.progressdialog.setRange(0, 0)
        self.webView.page().runJavaScript(CODE % code)
        self.progressdialog.exec_()

    @pyqtSlot(str)
    def saveImage(self, image):
        self.progressdialog.close()
        # data:image/png;base64,iVBORw0KG....
        if not image.startswith('data:image'):
            return
        data = base64.b64decode(image.split(';base64,')[1])
        image = QPixmap()
        image.loadFromData(data)
        # 添加到左侧list中
        item = QListWidgetItem(self.widgetRight)
        item.setIcon(QIcon(image))
        item.setData(Qt.UserRole + 1, image)
コード例 #25
0
class PersephonepWindow(QWidget):
    def __init__(self, parent=None):
        super(PersephonepWindow, self).__init__()

        self.initUI(parent=parent)

    def initUI(self, parent=None):

        # config
        initurl = 'https://www.google.co.jp'

        # setting window
        self.window = QWebEngineView()

        # disguise
        # profile = QWebEngineProfile()
        # profile.setHttpUserAgent('IE')
        # page = QWebEnginePage(profile)
        # self.window.setPage(page)
        # print(
        #    # Set user agent "{}"
        #   .format(
        #        self.window.page().profile().httpUserAgent()
        #    )
        #)

        # condig url
        self.window.load(QUrl(initurl))
        self.window.resize(1000, 600)
        self.window.move(200, 200)
        self.window.setWindowTitle(program_name())

        # setting button
        self.back_button = QPushButton('back')
        self.back_button.setToolTip('Go back to previous page.')
        self.back_button.clicked.connect(self.window.back)
        self.forward_button = QPushButton('forward')
        self.forward_button.setToolTip('Go to the next page.')
        self.forward_button.clicked.connect(self.window.forward)
        self.reload_button = QPushButton('reload')
        self.reload_button.setToolTip('Reload this page.')
        self.reload_button.clicked.connect(self.window.reload)
        self.url_edit = QLineEdit()
        self.url_edit.setToolTip('URL box')
        self.move_button = QPushButton('move')
        self.move_button.setToolTip('Move to the page set at URL box.')
        self.move_button.clicked.connect(self.loadPage)
        self.url_edit.returnPressed.connect(self.loadPage)
        self.home_button = QPushButton('home')
        self.home_button.setToolTip('Move to the home page.')
        self.home_button.clicked.connect(self.loadHomePage)

        # signal catch from moving web pages.
        self.window.urlChanged.connect(self.updateCurrentUrl)
        self.window.page().profile().\
            downloadRequested.connect(self._downloadRequested)

        # setting layout
        grid = QGridLayout()
        grid.setSpacing(0)
        grid.addWidget(self.back_button, 1, 0)
        grid.addWidget(self.forward_button, 1, 1)
        grid.addWidget(self.reload_button, 1, 2)
        grid.addWidget(self.url_edit, 1, 3, 1, 10)
        grid.addWidget(self.move_button, 1, 14)
        grid.addWidget(self.home_button, 1, 15)
        grid.addWidget(self.window, 2, 0, 5, 16)
        self.setLayout(grid)

        if parent is None:
            self.resize(1200, 800)
            self.center()
            self.setWindowTitle(program_name())
            self.show()

    def center(self):
        ''' centering widget
        '''
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def loadPage(self):
        ''' move web page which is set at url_edit
        If the head of move_url equals 'http://' or 'https://',
        query to google search form.
        If the head of move_url doed not include above protocol,
         but the style of *.*.*.*, add http:// to its_head
        '''
        move_url = self.url_edit.text()
        if self.check_url_protocol_ipv4(move_url):
            move_url = 'http://' + move_url
        elif not self.check_url_protocol(move_url):
            search_word = move_url.replace(' ', '+').replace(' ', '+')
            google_search_url = \
                'https://www.google.co.jp' \
                '/search?ie=utf-8&oe=utf-8&q={}&' \
                'hl=ja&btnG=search'.format(search_word)
            move_url = google_search_url
        move_url = QUrl(move_url)
        self.window.load(move_url)
        self.updateCurrentUrl()

    def check_url_protocol(self, move_url):
        if (move_url[0:7] == 'http://' or move_url[0:8] == "https://"
                or move_url[0:8] == 'file:///' or move_url[0:6] == 'ftp://'):
            return True
        else:
            return False

    def check_url_protocol_ipv4(self, move_url):
        ''' return True if move_url is IPv4 using Regular expression
        '''
        pattern = '(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.)' \
                  '{3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])'
        return re.match(pattern, move_url)

    def updateCurrentUrl(self):
        ''' rewriting url_edit when you move different web page.
        '''
        # current_url = self.window.url().toString()
        self.url_edit.clear()
        self.url_edit.insert(self.window.url().toString())

    def loadHomePage(self):
        ''' move to the home page
        '''
        initurl = 'https://www.google.co.jp'
        self.window.load(QUrl(initurl))

    def saveFile(self):
        print('download')

    def _downloadRequested(self, item):  # QWebEngineDownloadItem
        # print('downloading to', item.path)
        item.accept()

        dw = DownloadWindow(item)
        dw.show()
コード例 #26
0
try:
	from PyQt5.QtWebEngineWidgets import QWebEnginePage, QWebEngineView
except Exception:
	from PyQtWebEngine import QWebEnginePage, QWebEngineView

class EelThread(QThread):
    def __init__(self, parent = None, init='web',url='main.html'):
        QThread.__init__(self, parent)
        self.init = init
        self.url = url

    def run(self):        
        # Note: This is never called directly. It is called by Qt once the
        # thread environment has been set up.
        eel.init(self.init)
        eel.start(self.url, block=True, mode=None)

app=QApplication([]) # create QApplication to enable file dialogs

et=EelThread(init='web',url='app.html')
et.start()

w = QWebEngineView()
w.resize(1100,800)
w.load(QUrl('http://localhost:8000/app.html'))
w.show()

app.exec()

app.exit()
コード例 #27
0
ファイル: test_plot2d.py プロジェクト: ricleal/PythonCode
from PyQt5.QtWidgets import QApplication, QWidget
#from PyQt5.QtWebEngineWi  import QWebView
from PyQt5.QtWebEngineWidgets import QWebEngineView as QWebView
from PyQt5.QtCore import QUrl
import plots

html = '''<html>
<head>
    <title>Plotly Example</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
    <body>
    %(plot_content)s
    </body>
</html>'''

if __name__ == '__main__':

    app = QApplication(sys.argv)
    w = QWebView()
    w.resize(900, 700)
    w.move(300, 300)
    w.setWindowTitle('Simple 2D Plot')

    plot_content = plots.plot2d()

    w.setHtml(html%{'plot_content':plot_content})
    w.show()

    sys.exit(app.exec_())
コード例 #28
0
from PyQt5.QtOpenGL import QGLWidget
import plots

html = '''<html>
<head>
    <title>Plotly Example</title>
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
    <body>
    %(plot_content)s
    </body>
</html>'''

if __name__ == '__main__':

    app = QApplication(sys.argv)


    w = QWebView()
    w.resize(800, 600)
    w.setWindowTitle('Simple Plot')

    # QWebSettings.globalSettings().setAttribute(QWebSettings.AcceleratedCompositingEnabled, True)
    # QWebSettings.globalSettings().setAttribute(QWebSettings.WebGLEnabled, True)

    plot_content = plots.plot3d()
    w.setHtml(html%{'plot_content':plot_content})
    w.show()

    sys.exit(app.exec_())
コード例 #29
0
import sys
from PyQt5.QtCore import QUrl, Qt
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView

QApplication.setAttribute(Qt.AA_EnableHighDpiScaling, True)
app = QApplication(sys.argv)
view = QWebEngineView()
url = QUrl(sys.argv[1] if len(sys.argv) > 1 else 'https://yandex.ru/')
view.setUrl(url)
view.resize(1024, 750)
view.show()
sys.exit(app.exec())
コード例 #30
0
ファイル: RYB_Printing2.py プロジェクト: shqk17/python
    isJingmo = 0
    print(argvStr)
    # html = sys.argv[3]
    html = 'PGh0bWw+PHN0eWxlPiNteXNvY2tldFByaW50e2ZvbnQtZmFtaWx5Oiflvq7ova/pm4Xpu5EnLCdNaWNyb3NvZnQgWWFIZWknO2ZvbnQtc2l6ZToxNXB0fS5wcmludC1ib3h7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjIwcHg7bGluZS1oZWlnaHQ6MTJwdH10ZHtmb250LXNpemU6MTVwdH0uY3twYWRkaW5nLWxlZnQ6MjBweH08L3N0eWxlPjxib2R5PjxkaXYgd2lkdGg9IjMwMHB4ImlkPSJteXNvY2tldFByaW50Ij48ZGl2IGNsYXNzPSJwcmludC1ib3giPjxkaXYgYWxpZ249ImNlbnRlciJzdHlsZT0iZm9udC1zaXplOiAyMnB0Owlmb250LXdlaWdodDogNTAwOyI+57qi6buE6JOd5Lqy5a2Q5ZutPC9kaXY+PGRpdiBjbGFzcz0iaHIiPjxiIHN0eWxlPSJmb250LXNpemU6IDIycHQ7Ij4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08L2I+PC9kaXY+PGRpdiBhbGlnbj0iY2VudGVyInN0eWxlPSJtYXJnaW4tYm90dG9tOiAzcHg7Ij4yMDE55bm0MTHmnIgyNuaXpTA5OjU0PC9kaXY+PGRpdiBhbGlnbj0iY2VudGVyIj7nrb7liLDlrp3lrp3vvJrjgJDkuo7kvbPkuZDjgJE8L2Rpdj48ZGl2IGNsYXNzPSJociJzdHlsZT0ibWFyZ2luLXRvcDogMjBweDsiPjxiIHN0eWxlPSJmb250LXNpemU6IDIycHQiPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvYj48L2Rpdj48dGFibGU+PHRyPjx0ZCBjbGFzcz0iYyJhbGlnbj0icmlnaHQiPuivvueoi+WQjeensO+8mjwvdGQ+PHRkIGFsaWduPSJsZWZ0Ij7pn7PkuZBJSTwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPSJjImFsaWduPSJyaWdodCI+5LiK6K++5pe26Ze077yaPC90ZD48dGQgYWxpZ249ImxlZnQiPjExOjUzOjQ1PC90ZD48L3RyPjx0cj48dGQgY2xhc3M9ImMiYWxpZ249InJpZ2h0Ij7mjojor77ogIHluIjvvJo8L3RkPjx0ZCBhbGlnbj0ibGVmdCI+6ICB5biI5LiAZmdmZ2dnPC90ZD48L3RyPjx0cj48dGQgY2xhc3M9ImMiYWxpZ249InJpZ2h0Ij7mtojogJfor77ml7bvvJo8L3RkPjx0ZCBhbGlnbj0ibGVmdCI+MeivvuaXtjwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPSJjImFsaWduPSJyaWdodCI+5raI6ICX6K++5YyF77yaPC90ZD48dGQgYWxpZ249ImxlZnQiPua1i+ivleivvuaXtuWMhTwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPSJjImFsaWduPSJyaWdodCI+5raI6ICX6K++5YyFMe+8mjwvdGQ+PHRkIGFsaWduPSJsZWZ0Ij7mtYvor5Xor77ml7bljIU8L3RkPjwvdHI+PHRyPjx0ZCBjbGFzcz0iYyJhbGlnbj0icmlnaHQiPua2iOiAl+ivvuWMhTHvvJo8L3RkPjx0ZCBhbGlnbj0ibGVmdCI+5rWL6K+V6K++5pe25YyFPC90ZD48L3RyPjx0cj48dGQgY2xhc3M9ImMiYWxpZ249InJpZ2h0Ij7mtojogJfor77ljIUx77yaPC90ZD48dGQgYWxpZ249ImxlZnQiPua1i+ivleivvuaXtuWMhTwvdGQ+PC90cj48dHI+PHRkIGNsYXNzPSJjImFsaWduPSJyaWdodCI+5raI6ICX6K++5YyFMe+8mjwvdGQ+PHRkIGFsaWduPSJsZWZ0Ij7mtYvor5Xor77ml7bljIU8L3RkPjwvdHI+PHRyPjx0ZCBjbGFzcz0iYyJhbGlnbj0icmlnaHQiPua2iOiAl+ivvuWMhTLvvJo8L3RkPjx0ZCBhbGlnbj0ibGVmdCI+5rWL6K+V6K++5pe25YyFPC90ZD48L3RyPjx0cj48dGQgY2xhc3M9ImMiYWxpZ249InJpZ2h0Ij7liankvZnor77ml7bvvJo8L3RkPjx0ZCBhbGlnbj0ibGVmdCI+NDDor77ml7Y8L3RkPjwvdHI+PC90YWJsZT48ZGl2IGNsYXNzPSJociJzdHlsZT0ibWFyZ2luLXRvcDogMjBweDsiPjxiIHN0eWxlPSJmb250LXNpemU6IDIycHQiPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwvYj48L2Rpdj48ZGl2IGFsaWduPSJjZW50ZXIic3R5bGU9Im1hcmdpbi1ib3R0b206IDNweDsiPuaEn+iwouaCqOeahOWIsOadpe+8gTwvZGl2PjxkaXYgYWxpZ249ImNlbnRlciI+5pyN5Yqh54Ot57q/77yaMDEwLTI4NzIyMzMzPC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4='
    print(html)
    print("----------------------------------------------")
    html = base64.b64decode(html).decode("utf-8")
    print(html)
    # p = Printer.removeHead(urllib.parse.unquote(argvStr))  # 打印机名称
    # p = 'Microsoft Print to PDF'
    p = 'GP-5830 Series'
    app = QApplication(sys.argv)
    ##########################################
    if isJingmo == 1:
        browser = QWebEngineView()
        browser.setWindowTitle('使用PyQt5打印热敏小票')
        browser.resize(1200, 600)
        channel = QWebChannel()
        printer = Print(p)
        channel.registerObject('printer', printer)
        browser.page().setWebChannel(channel)
        url_string = "http://127.0.0.1:8848/demo/test.html"  # 内置的网页地址
        browser.load(QUrl(url_string))
        browser.show()
    else:
        printer = Printer.getPrinter(p)
        Printer.printing(printer, html)

    #####################################################
    sys.exit(app.exec_())
コード例 #31
0
    line_edit_obj1.textChanged[str].connect(onChanged)
    layout.replaceWidget(cb,line_edit_obj1)
    layout.update()
    win.update()

def detect():
    Shp2JSON('./shapefile/Polygon.shp')

# 按钮连接 'complete_name'槽,当点击按钮是会触发信号
button_track1.clicked.connect(track1)
button_draw.clicked.connect(draw)
button_confirm.clicked.connect(detect)
# 把QWebView和button加载到layout布局中
m = folium.Map(location=[55.8527, 37.5689], zoom_start=13)
data = io.BytesIO()
m.save(data, close_file=False)
w = QWebEngineView()
w.setHtml(data.getvalue().decode())
w.resize(640, 480)
layout.addWidget(label_obj1)
layout.addWidget(cb)
layout.addWidget(w)
layout.addWidget(button_track1)
layout.addWidget(button_draw)
layout.addWidget(button_confirm)


# 显示窗口和运行app
win.show()
sys.exit(app.exec_())