PyQt:左侧选项卡
写在前面
正在用pyqt写我们比赛项目的客户端,针对左侧选项卡,写了一个简单的demo。记录一下。
环境
Python3.5.2
PyQt5
陈述
用的结构是左边一个QListWidget + 右边QStackedWidget,将QWebView加在QStackedWidget上(因为打算用来展示一些charts,用的pyecharts做的数据可视化,生成的html文件,直接嵌入在客户端内,因此用QWebView来显示,关于pyecharts可以看我另外一篇文章https://www.cnblogs.com/jyroy/p/9446486.html)
我用的QSS来进行QListWidget的美化,做成类似网易云音乐的侧边栏的样子,我用的是QSS Editor写的QSS(强烈推荐,好用!!),py代码、QSS代码和效果展示如下
详细注释见代码
py代码如下
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: jyroy
import sys from PyQt5.QtCore import QUrl
from PyQt5.QtWebKitWidgets import QWebView
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QListWidget,QStackedWidget
from PyQt5.QtWidgets import QListWidgetItem
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QHBoxLayout from PyQt5.QtCore import QSize, Qt class LeftTabWidget(QWidget):
'''左侧选项栏'''
def __init__(self):
super(LeftTabWidget, self).__init__()
self.setObjectName('LeftTabWidget') self.setWindowTitle('LeftTabWidget')
with open('D:/python/code/qt/test/QSS/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 = ['岗位需求','专业要求','薪水分布','城市分布']
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 = QWebView() #右侧用QWebView来显示html网页
self.browser.setUrl(QUrl.fromLocalFile('D://python//code//vision//%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-width: 120px;
max-width: 120px;
color: Black;
background: #F5F5F5;
} QListWidget::Item:selected {
background: lightGray;
border-left: 5px solid red;
}
HistoryPanel:hover {
background: rgb(52, 52, 52);
}
效果展示
写在后面
因为只是写了一个demo,所以没有进行很深入的调整,主要展示侧边栏,大家见谅~
欢迎交流!
PyQt:左侧选项卡的更多相关文章
- mui 左侧选项卡-div模式 的选项卡切换监听
使用$('#segmentedControls').on('change', '.mui-control-item', function () { })和 document.getElementByI ...
- 仿酷狗音乐播放器开发日志二十四 选项设置窗体的实现(附328行xml布局源码)
转载请说明原出处,谢谢~~ 花了两天时间把仿酷狗的选项设置窗体做出来了,当然了只是做了外观.现在开学了,写代码的时间减少,所以整个仿酷狗的工程开发速度减慢了.今天把仿酷狗的选项设置窗体的布局代码分享出 ...
- 【Web】十步教你搭建完整免费的个人网站(花生壳+XAMPP+WordPress)
1.从花生壳官网(http://www.oray.com/peanuthull/download.php)下载最新版本的客户端. 下载完成后安装,注册护照(需手机验证码验证),注册完成后获取免费域名并 ...
- idea自我使用简单使用方式和出现的一些简单问题以及常用快捷键
首先配置完Idea的简单使用步骤后,今天在使用Idea时,一直持续提示web项目404的错误提示,因为之前使用idea时,部署的是springBoot的项目,使用的是SpringBoot自带的Tomc ...
- [js高手之路]html5 canvas动画教程 - 自己动手做一个类似windows的画图软件
这个绘图工具,我还没有做完,不过已经实现了总架构,以及常见的简易图形绘制功能: 1,可以绘制直线,圆,矩形,正多边形[已完成] 2,填充颜色和描边颜色的选择[已完成] 3,描边和填充功能的选择[已完成 ...
- 史上最全最详细的环境搭建教程,行百里者手把手教你在windows下搭建Anaconda+pycharm+库文件(TensorFlow,numpy)环境搭建
我是在搭建TensorFlow开发环境的道路上走了很多弯路 掉了很多头发,为了让广大同学们不在受苦受累 下面我将手把手教你学习如特快速搭建python环境 快速导入numpy,PIL,pillow,等 ...
- Python的环境搭建——万丈高楼平地起
Python的环境搭建,远程连接,端口映射,虚拟机 写在正文之前 python语言的开发环境还是相对比较简单的,但是也是有很多需要注意的地方,对于初次接触python或者以前很少用到虚拟环境的朋友来说 ...
- 在Navicat中如何新建数据库和表并做查询
上一篇文章,小编给大家分享了在Navicat中如何远程连接数据库,没有来得及上车的小伙伴可以戳这篇文章:在Ubuntu14.04中配置mysql远程连接教程.今天小编给大家分享一下如何在Navicat ...
- Django(九) xadmin全局配置
xadmin的使用,首先需要对model进行注册,才能在后台管理中进行操作. 1.在app里创建py文件:adminx(必须这个名称) 2.导入xadmin和models里的类,格式如下: 其中lis ...
随机推荐
- java做图片点击文字验证码
https://blog.csdn.net/qq_27721169/article/details/82769093
- C#的排序Sort和OrderBy扩展方法
可以实现一个IComparable接口的CompareTo方法,或者是给予List的Sort扩展方法,传入委托实现,举个例子: list.Sort((a, b) => { var o = a.s ...
- ISP PIPLINE (九_1) Denoise 之 space domain denoise
1.空间域噪声类型 1.gauss+possion 2.椒盐噪声(dpc处理已经处理了) 去除空域噪声有哪些方法? 空域噪声一般的思想是对某pixel邻域的pixels进行加权平均. 比如 1.高斯降 ...
- 【C语言编程练习】5.7填数字游戏求解
之前的东西就不上传了,大致就跟现在的一样 1. 题目要求 计算 ABCD * E DCBA 这个算式中每个字母代表什么数字? 2. 题目分析 如果是我们人去做这道题会怎么办,一定是这样想把,一个四位 ...
- 关闭或启动linux防火墙后,docker启动容器报错
# docker启动报错 # 解决办法:重建docker0网络恢复 #按照进程名杀死docker进程 [root@localhost mysqlconf]# pkill docker #清空防 ...
- 我的 FPGA 学习历程(14)—— PWM 脉冲宽度调制
PWM 是一种调节输出功率的技术(俗称调压),其原理在于改变输出方波的占空比,具体输出见下图: 输出信号为电压值,当负载为恒阻时,上图中的输出功率分别为 25%.50%.75%. 实现方法如下: 设置 ...
- [git]checkout&branch
git branch 和 git checkout经常在一起使用,所以在此将它们合在一起 1.Git branch 一般用于分支的操作,比如创建分支,查看分支等等, 1.1 git branch 不带 ...
- IntelliJ IDEA部署web项目,Tomcat没有出现Artifacts
解决办法:
- linux的软件安装方式总结
Linux系统中软件的“四”种安装原理详解:源码包安装.RPM二进制安装.YUM在线安装.脚本安装包 一.Linux软件包分类 1.1 源码包 优点: 开源,如果有足够的能力,可以修改源代码: 可 ...
- vue的环境安装(一node环境)
话不多说都知道vue是基于node环境的.肯定是要安装node环境的 1.node官网下载https://nodejs.org/en/download/对应的版本我的是win的 2.双击下载下来的安装 ...