【Pyqt5】之高级控件QTableWidget的使用
1:动态渲染数据+动态添加控件(按钮,进度条)
class MainWindow(QWidget, Ui_MainFrom):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
# #去掉标题头
# self.setWindowFlags(Qt.FramelessWindowHint)
# self.m_flag = False
self.Button = QPushButton(self)
self.Button.setGeometry(QtCore.QRect(880, 80, 93, 41))
# 列表显示
self.tableWidget.setColumnCount(5)
# self.tableWidget.setRowCount(3)
self.tableWidget.setHorizontalHeaderLabels(('视频网站','视频标题','播放地址','下载进度','操作',))
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers) # 禁止编辑
# 取数据库数据 输出来是个列表
sortInfo = [('', 1, 1,),('', 1, 1, ),('', 1, 1,)]
# 动态渲染数据
for row, row_data in enumerate(sortInfo):
self.tableWidget.insertRow(row) # 插入行
for column in range(len(row_data)+2): # 需要多插入2列
# 如果遍历数小于需要插入的函数,就显示空
if column < len(row_data):
self.tableWidget.setItem(row, column, QtWidgets.QTableWidgetItem(str(row_data[column])))
# 如果遍历数等于需要插入的函数
if column == len(row_data):
# 传入当前id
print("row_data[0]",row+1)
# 添加两列 进度条 按钮
self.tableWidget.setCellWidget(row, column, self.ProgressBar(str(row_data[0])))
self.tableWidget.setCellWidget(row, column+1, self.buttonForRow(str(row_data[0]))) # 进度条
def ProgressBar(self, id):
widget = QWidget()
# 进度条
statusBar = QProgressBar()
statusBar.setStyleSheet(''' text-align : center;
background-color : LightCoral;
height : 30px;
''')
hLayout = QHBoxLayout()
hLayout.addWidget(statusBar)
widget.setLayout(hLayout)
return widget # 列表内添加按钮
def buttonForRow(self,id):
widget = QWidget()
# 路径
downloadPath = QPushButton('路径')
downloadPath.setStyleSheet(''' text-align : center;
background-color : NavajoWhite;
height : 30px;
border-style: outset;
font : 13px ''') # 槽函数
downloadPath.clicked.connect(lambda:downloadPath_action.downloadPath((id))) # 下载
downLoad = QPushButton('下载')
downLoad.setStyleSheet(''' text-align : center;
background-color : DarkSeaGreen;
height : 30px;
border-style: outset;
font : 13px; ''') # 删除
deleteBtn = QPushButton('删除')
deleteBtn.setStyleSheet(''' text-align : center;
background-color : LightCoral;
height : 30px;
border-style: outset;
font : 13px; ''') hLayout = QHBoxLayout()
hLayout.addWidget(downloadPath)
hLayout.addWidget(downLoad)
hLayout.addWidget(deleteBtn)
hLayout.setContentsMargins(5, 2, 5, 2)
widget.setLayout(hLayout) return widget def main():
app = QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_()) if __name__ == "__main__":
main()
【Pyqt5】之高级控件QTableWidget的使用的更多相关文章
- PyQt5——高级控件
PyQt5高级控件使用方法详见:https://blog.csdn.net/jia666666/article/list/4?t=1& PyQt5高级控件汇总: 1.QTableView 2. ...
- Android高级控件--AdapterView与Adapter
在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...
- Android 高级控件(七)——RecyclerView的方方面面
Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...
- Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现
Android高级控件(六)--自定义ListView高仿一个QQ可拖拽列表的实现 我们做一些好友列表或者商品列表的时候,居多的需求可能就是需要列表拖拽了,而我们选择了ListView,也是因为使用L ...
- Android高级控件(五)——如何打造一个企业级应用对话列表,以QQ,微信为例
Android高级控件(五)--如何打造一个企业级应用对话列表,以QQ,微信为例 看标题这么高大上,实际上,还是运用我么拿到listview去扩展,我们讲什么呢,就是研究一下QQ,微信的这种对话列表, ...
- Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷
Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...
- Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系
Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 现在的二维码可谓是烂大街了,到处都是二维码,什么都是二维码,扫一扫似乎已经流行到习以为常了,今天 ...
- Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现
Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...
- Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能
Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...
随机推荐
- python collections 模块 之 deque
class collections.deque(iterable[,maxlen]): 返回 由可迭代对象初始化的 从左向右的 deque 对象. maxlen: deque 的最大长度,一旦长度超出 ...
- neo4j的搭建和实例使用
一. 简介 neo4j是当今最流行的图数据库,基于 节点+关系 的架构,保存了图形数据的基本元素.同时,数据库也支持通过基础数据元素和独特的CQL查询语法,快速方便的检索.构建复杂的图表关系结果. 二 ...
- 深入浅出 Java Concurrency (15): 锁机制 part 10 锁的一些其它问题[转]
主要谈谈锁的性能以及其它一些理论知识,内容主要的出处是<Java Concurrency in Practice>,结合自己的理解和实际应用对锁机制进行一个小小的总结. 首先需要强调的一点 ...
- vue项目 环境搭建
1.前端安装 安装项目:vue init webpack docvote 进入docvote里:cd docvote 安装脚手架:cnpm i 运行:npm run dev 2.异步加载 const ...
- 开方运算的DSP实现
//=============================================== //函数名:VSqrt3 //功能: 实现对32位定点数的开方 //性能: 60M主频28015 ...
- Java常用的数据结构
collection : List:arrayList,linkedList,vector set:treeSet ,hashSet; map: hashMap treeMap linkedHashM ...
- day65-test
目录 一.点击事件控制标签颜色 二.实现点击次数,变换页面标签的颜色 三.周期性实现颜色的旋转变色 练习题 一.点击事件控制标签颜色 1.有 红.黄.蓝 三个按钮,以及一个200x200矩形框box, ...
- 2019-5-25-如何在-CMD-启动的软件传入带空格的路径
title author date CreateTime categories 如何在 CMD 启动的软件传入带空格的路径 lindexi 2019-05-25 09:31:46 +0800 2019 ...
- independent set 1
independent set 1 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 102400K,其他语言204800K64bit IO Format: %lld 题目描述 Note: ...
- POJ 2533 最小上升子序列
D - POJ 2533 经典DP-最长上升子序列 A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let th ...