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