Aug-03-2020, 12:42 PM
I wanted to create a scrollbar(pyqt5) into tab, base on example in link below I did some changes to fit my need but the scrollbar didn't show on tab and my charts become smaller.
example https://stackoverflow.com/questions/4947...fixed-size
import file https://filebin.net/u3m7m3x2k74wlm6l
example https://stackoverflow.com/questions/4947...fixed-size
import file https://filebin.net/u3m7m3x2k74wlm6l
import sys
import os
import pandas as pd
#from pandas import DataFrame
from PyQt5.QtWidgets import ( QApplication, QLabel, QWidget,QHBoxLayout,QVBoxLayout,QPushButton,QTabWidget,QMainWindow,QGridLayout,QSizePolicy\
,QDateEdit,QCalendarWidget,QLineEdit,QMessageBox,QFileDialog,QCompleter,QScrollArea,QWidget,QGroupBox)
#import sqlite3
from PyQt5.QtGui import *
from PyQt5.QtGui import QFont
from PyQt5.QtCore import *
# for graph
#import plotly.graph_objects as go
#import html
import plotly.offline as po
import plotly.express as px
import plotly.graph_objs as go
from PyQt5.QtWebEngineWidgets import *
class Win(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(100,100, 1280,900)
self.GuiApp=App()
self.setCentralWidget(self.GuiApp)
self.show()
class Tab2(QWidget):
def __init__(self, parent=None):
super(Tab2, self).__init__(parent)
self.But1 = QPushButton (" Test But ", self)
self.But1.show()
class Tab1(QWidget):
def __init__(self, parent=None):
super(Tab1, self).__init__(parent)
df = pd.read_csv(r'C:/Users/User/Desktop/Python-setup test/Plot122.csv')
data1 = px.line(df,x = 'Date', y ='AAPL.Open', color = 'CellName')
fig4 = go.Figure(data1)
raw_html = '<html><head><meta charset="utf-8" />'
raw_html += '<script src="https://cdn.plot.ly/plotly-latest.min.js"></script></head>'
raw_html += '<body>'
raw_html += po.plot(fig4, include_plotlyjs=False, output_type='div')
raw_html += '</body></html>'
#fig_view
fig_view1 = QWebEngineView()
fig_view2 = QWebEngineView()
fig_view3 = QWebEngineView()
fig_view4 = QWebEngineView()
fig_view5 = QWebEngineView()
fig_view6 = QWebEngineView()
fig_view1.setHtml(raw_html)
fig_view1.setFixedSize(700,400)
fig_view1.show()
fig_view2.setHtml(raw_html)
fig_view2.setFixedSize(700,400)
fig_view2.show()
fig_view3.setHtml(raw_html)
fig_view3.setFixedSize(700,400)
fig_view3.show()
fig_view4.setHtml(raw_html)
fig_view4.setFixedSize(700,400)
fig_view4.show()
fig_view5.setHtml(raw_html)
fig_view5.setFixedSize(700,400)
fig_view5.show()
fig_view6.setHtml(raw_html)
fig_view6.setFixedSize(700,400)
fig_view6.show()
layoutC = QGridLayout()
layoutC.addWidget(fig_view1,0,0,1,1)
layoutC.addWidget(fig_view2,0,1,1,1)
layoutC.addWidget(fig_view3,1,0,1,1)
layoutC.addWidget(fig_view4,1,1,1,1)
layoutC.addWidget(fig_view5,2,0,1,1)
layoutC.addWidget(fig_view6,2,1,1,1)
self.setLayout(layoutC)
self.setSizePolicy(QSizePolicy.Maximum,QSizePolicy.Maximum)
class App(QWidget):
def __init__(self):
super().__init__()
self.layout = QGridLayout(self)
self.setLayout(self.layout)
#Button
BT1 = QPushButton('BT1',self)
BT2 = QPushButton('BT2',self)
BT1.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Fixed)
BT2.setSizePolicy(QSizePolicy.Preferred,QSizePolicy.Fixed)
#add Button into Widget with location
self.layout.addWidget(BT1, 0,0,1,1)
self.layout.addWidget(BT2, 1,0,1,1)
#end
##########################################TEST Graogs ##################################################################################
tab1 = Tab1(self)
tab2 = Tab2(self)
self.tabs = QTabWidget(self)
self.tabs.addTab(tab1, 'Page 1')
self.tabs.addTab(tab2,'Page2')
self.groupscrollbox = QGroupBox()
self.MVB = QVBoxLayout()
self.MVB.addWidget(self.tabs) #add tab into QVBOX
widgetTab = QWidget(self)
widgetTab.setLayout(QHBoxLayout())
widgetTab.layout().addWidget(self.groupscrollbox) #set groupbox as widget
self.scroll = QScrollArea()
self.scroll.setWidget(widgetTab)
self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.scroll.setWidgetResizable(True)
self.scroll.setEnabled(True)
self.groupscrollbox.setLayout(self.MVB)
###################################Test Graph@@#######################################################################################
self.layout.addWidget(self.groupscrollbox, 0,2,13,1)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Win()
sys.exit(app.exec_())
