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()
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_())
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)
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()
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()
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()
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)
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)
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")
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_())
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)))
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_())
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()
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()
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()
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)
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()
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_())
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()
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_())
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)
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
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 )
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)
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()
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()
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_())
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_())
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())
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_())
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_())