import sys,os from PyQt5.QtCore import * from PyQt5.QtWebEngineWidgets import * from PyQt5.QtWidgets import QApplication app = QApplication(sys.argv) web =QWebEngineView() #web.load(QUrl('http://192.168.2.242:8000/')) script_dir = os.path.dirname(__file__) file_path = os.path.join(script_dir, 'test.html') with open(file_path,encoding="UTF-8") as f: html = f.read() print(file_path) web.load(QUrl.fromLocalFile(file_path)) web.show() sys.exit(app.exec_()) # import pandas as pd # from bokeh import plotting, embed, resources # from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets # import os # class Widget(QtWidgets.QWidget): # def __init__(self, parent=None): # super(Widget, self).__init__(parent) # button = QtWidgets.QPushButton("Submit") # saveit = QtWidgets.QPushButton('save') # self.m_output = QtWebEngineWidgets.QWebEngineView() # button.clicked.connect(self.on_button_clicked) # saveit.clicked.connect(self.do_save) # lay = QtWidgets.QVBoxLayout(self) # lay.addWidget(button) # lay.addWidget(saveit) # lay.addWidget(self.m_output) # self.resize(640, 480) # @QtCore.pyqtSlot() # def do_save(self): # p = plotting.figure(plot_width=300, plot_height=300) # data = {"Day": [0, 1, 2, 3, 0, 1], "Num": [0, 0, 1, 1, 2, 3]} # df = pd.DataFrame(data) # p.hexbin(df.Day, df.Num, size=0.5) # html = embed.file_html(p, resources.CDN, "my plot") # script_dir = os.path.dirname(__file__) # file_path = os.path.join(script_dir, './test.html') # with open(file_path,'w',encoding='utf_8') as f: # f.write(html) # print(html) # self.m_output.setHtml(html) # @QtCore.pyqtSlot() # def on_button_clicked(self): # # p = plotting.figure(plot_width=300, plot_height=300) # # data = {"Day": [0, 1, 2, 3, 0, 1], "Num": [0, 0, 1, 1, 2, 3]} # # df = pd.DataFrame(data) # # p.hexbin(df.Day, df.Num, size=0.5) # # html = embed.file_html(p, resources.CDN, "my plot") # # self.m_output.setHtml(html) # #self.m_output.setContent(html,"text/html;charset=UTF-8","") # # html ='' # # script_dir = os.path.dirname(__file__) # # file_path = os.path.join(script_dir, './test.html') # # with open(file_path,encoding="UTF-8") as f: # # html = f.read() # # print(html) # self.m_output.load(QtCore.QUrl('https://t-online.de')) # if __name__ == "__main__": # import sys # app = QtWidgets.QApplication(sys.argv) # w = Widget() # w.show() # sys.exit(app.exec_()) # from PyQt5.QtWidgets import QApplication # from PyQt5.QtWebEngineWidgets import QWebEngineView # from PyQt5.QtWebChannel import QWebChannel # from PyQt5.QtCore import QObject, pyqtSlot, QUrl, QVariant # import os # class CallHandler(QObject): # @pyqtSlot(result=QVariant) # def test(self): # print('call received') # return QVariant({"abc": "def", "ab": 22}) # # take an argument from javascript - JS: handler.test1('hello!') # @pyqtSlot(QVariant, result=QVariant) # def test1(self, args): # print('i got') # print(args) # return "ok" # class WebView(QWebEngineView): # def __init__(self): # super(WebView, self).__init__() # self.channel = QWebChannel() # self.handler = CallHandler() # self.channel.registerObject('handler', self.handler) # self.page().setWebChannel(self.channel) # file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), "test.html")) # local_url = QUrl.fromLocalFile(file_path) # self.load(local_url) # if __name__ == "__main__": # app = QApplication([]) # view = WebView() # view.show() # app.exec_() # from bokeh.plotting import figure, show # # prepare some data # x = [1, 2, 3, 4, 5] # y = [6, 7, 2, 4, 5] # # create a new plot with a title and axis labels # p = figure(title="Simple line example", x_axis_label="x", y_axis_label="y") # # add a line renderer with legend and line thickness # p.line(x, y, legend_label="Temp.", line_width=2) # # show the results # show(p) # import sys # from pathlib import Path # from PyQt5 import QAxContainer # from PyQt5.QtCore import Qt # from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QLineEdit, QApplication # import sys # from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout # from PyQt5.QtWebEngineWidgets import QWebEngineView # from PyQt5.QtCore import pyqtSlot # from bokeh.layouts import column # from bokeh.models import ColumnDataSource, CustomJS, Slider # from bokeh.plotting import Figure, output_file # from bokeh.embed import file_html # from bokeh.resources import CDN # class App(QWidget): # def __init__(self): # super().__init__() # self.resize(500, 500) # self.initUI() # def initUI(self): # button = QPushButton('start', self) # button.move(100, 70) # button.clicked.connect(self.on_click) # self.layout = QVBoxLayout() # self.layout1 = QVBoxLayout() # self.layout1.addWidget(button) # self.layout2 = QVBoxLayout() # self.layout.addLayout(self.layout1) # self.layout.addLayout(self.layout2) # self.setLayout(self.layout) # self.show() # @pyqtSlot() # def on_click(self): # print('PyQt5 button click') # self.m_output = QWebEngineView() # self.layout2.addWidget(self.m_output) # #html_file = self.bokeh_function() # html_file = self.test_html() # self.m_output.setHtml(html_file) # self.m_output.show() # def bokeh_function(self): # # taken from https://docs.bokeh.org/en/latest/docs/user_guide/interaction/callbacks.html # output_file("js_on_change.html") # x = [x * 0.005 for x in range(0, 200)] # y = x # source = ColumnDataSource(data=dict(x=x, y=y)) # plot = Figure(width=400, height=400) # plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6) # callback = CustomJS(args=dict(source=source), code=""" # const data = source.data; # const f = cb_obj.value # const x = data['x'] # const y = data['y'] # for (let i = 0; i < x.length; i++) { # y[i] = Math.pow(x[i], f) # } # source.change.emit(); # """) # slider = Slider(start=0.1, end=4, value=1, step=.1, title="power") # slider.js_on_change('value', callback) # layout = column(slider, plot) # html = file_html(layout, CDN, "my plot") # return html # def test_html(self): # html = '
' # html += '' # html += '' # #html += plotly.offline.plot(fig, include_plotlyjs=False, output_type='div') # html += 'Hi there!' # html += '' # return html # if __name__ == '__main__': # app = QApplication(sys.argv) # ex = App() # sys.exit(app.exec_())