zoukankan      html  css  js  c++  java
  • PySide2 侧边栏, 初稿

    Py文件

    # file: sidebar.py
    
    import sys
    from PySide2.QtCore import QUrl
    from PySide2.QtCore import QSize, Qt
    from PySide2.QtWidgets import QWidget
    from PySide2.QtWidgets import QHBoxLayout
    from PySide2.QtWidgets import QApplication
    from PySide2.QtWidgets import QListWidgetItem
    from PySide2.QtWebEngineWidgets import QWebEngineView
    from PySide2.QtWidgets import QListWidget,QStackedWidget
    
    
    class LeftTabWidget(QWidget):
        '''左侧选项栏'''
        def __init__(self):
            super(LeftTabWidget, self).__init__()
            self.setObjectName('LeftTabWidget')
    
            self.setWindowTitle('LeftTabWidget')
            with open('QListWidgetQSS.qss', 'r') as f:   #导入QListWidget的qss样式
                self.list_style = f.read()
    
            self.main_layout = QHBoxLayout(self, spacing=0)     #窗口的整体布局
            self.main_layout.setContentsMargins(0,0,0,0)
    
            self.left_widget = QListWidget()     #左侧选项列表
            self.left_widget.setStyleSheet(self.list_style)
            self.main_layout.addWidget(self.left_widget)
    
            self.right_widget = QStackedWidget()
            self.main_layout.addWidget(self.right_widget)
    
            self._setup_ui()
    
        def _setup_ui(self):
            '''加载界面ui'''
    
            self.left_widget.currentRowChanged.connect(self.right_widget.setCurrentIndex)   #list和右侧窗口的index对应绑定
    
            self.left_widget.setFrameShape(QListWidget.NoFrame)    #去掉边框
    
            self.left_widget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)  #隐藏滚动条
            self.left_widget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
    
            list_str = ['岗位需求','专业要求','薪水分布','城市分布']
            # 具体html文件自己制作
            url_list = ['job_num_wordcloud.html', 'edu_need.html', 'salary_bar.html', 'edu_salary_bar.html']
    
            for i in range(4):
                self.item = QListWidgetItem(list_str[i],self.left_widget)   #左侧选项的添加
                self.item.setSizeHint(QSize(30,60))
                self.item.setTextAlignment(Qt.AlignCenter)                  #居中显示
    
                self.browser = QWebEngineView()                                   #右侧用QWebView来显示html网页
                # 具体地址自己修改
                self.browser.setUrl(QUrl.fromLocalFile('C://Users//Administrator//Desktop//%s' % url_list[i]))
                self.right_widget.addWidget(self.browser)
    
    
    def main():
        ''' '''
        app = QApplication(sys.argv)
    
        main_wnd = LeftTabWidget()
        main_wnd.show()
    
        app.exec_()
    
    if __name__ == '__main__':
        main()
    

    qss 文件

    QListWidget, QListView, QTreeWidget, QTreeView {
        outline: 0px;
    }
    
    QListWidget {
        min- 120px;
        max- 120px;
        color: Black;
        background: #F5F5F5;
    }
    
    QListWidget::Item:selected {
        background: lightGray;
        border-left: 5px solid red;
    }
    HistoryPanel:hover {
        background: rgb(52, 52, 52);
    }
    

    主要参考

  • 相关阅读:
    30岁的程序猿坐的太久,也要用一下脑子
    HIPO图
    CMake入门(二)
    hdu1711 Number Sequence
    EF架构~在ef中支持IQueryable级别的Contains被翻译成了Exists,性能可以接受!
    JS框架~Angularjs
    将不确定变为确定~transactionscope何时提升为分布式事务?(sql2005数据库解决提升到MSDTC的办法)
    SignalR实现服务器与客户端的实时通信
    基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化
    [置顶] 电视机顶盒搜台原理和方法简析
  • 原文地址:https://www.cnblogs.com/MasonHu/p/14012000.html
Copyright © 2011-2022 走看看