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的使用的更多相关文章

  1. PyQt5——高级控件

    PyQt5高级控件使用方法详见:https://blog.csdn.net/jia666666/article/list/4?t=1& PyQt5高级控件汇总: 1.QTableView 2. ...

  2. Android高级控件--AdapterView与Adapter

    在J2EE中提供过一种非常好的框架--MVC框架,实现原理:数据模型M(Model)存放数据,利用控制器C(Controller)将数据显示在视图V(View)上.在Android中有这样一种高级控件 ...

  3. Android 高级控件(七)——RecyclerView的方方面面

    Android 高级控件(七)--RecyclerView的方方面面 RecyclerView出来很长时间了,相信大家都已经比较了解了,这里我把知识梳理一下,其实你把他看成一个升级版的ListView ...

  4. Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现

    Android高级控件(六)--自定义ListView高仿一个QQ可拖拽列表的实现 我们做一些好友列表或者商品列表的时候,居多的需求可能就是需要列表拖拽了,而我们选择了ListView,也是因为使用L ...

  5. Android高级控件(五)——如何打造一个企业级应用对话列表,以QQ,微信为例

    Android高级控件(五)--如何打造一个企业级应用对话列表,以QQ,微信为例 看标题这么高大上,实际上,还是运用我么拿到listview去扩展,我们讲什么呢,就是研究一下QQ,微信的这种对话列表, ...

  6. Android高级控件(四)——VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷

    Android高级控件(四)--VideoView 实现引导页播放视频欢迎效果,超级简单却十分的炫酷 是不是感觉QQ空间什么的每次新版本更新那炫炫的引导页就特别的激动,哈哈,其实他实现起来真的很简单很 ...

  7. Android高级控件(三)—— 使用Google ZXing实现二维码的扫描和生成相关功能体系

    Android高级控件(三)-- 使用Google ZXing实现二维码的扫描和生成相关功能体系 摘要 现在的二维码可谓是烂大街了,到处都是二维码,什么都是二维码,扫一扫似乎已经流行到习以为常了,今天 ...

  8. Android高级控件(二)——SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现

    Android高级控件(二)--SurfaceView实现GIF动画架包,播放GIF动画,自己实现功能的初体现 写这个的原因呢,也是因为项目中用到了gif动画,虽然网上有很多的架包可以实现,不过我们还 ...

  9. Android高级控件(一)——ListView绑定CheckBox实现全选,增加和删除等功能

    Android高级控件(一)--ListView绑定CheckBox实现全选,增加和删除等功能 这个控件还是挺复杂的,也是项目中应该算是比较常用的了,所以写了一个小Demo来讲讲,主要是自定义adap ...

随机推荐

  1. neo4j的搭建和实例使用

    一. 简介 neo4j是当今最流行的图数据库,基于 节点+关系 的架构,保存了图形数据的基本元素.同时,数据库也支持通过基础数据元素和独特的CQL查询语法,快速方便的检索.构建复杂的图表关系结果. 二 ...

  2. MySQL5.6 community从下载到安装

    一, 官网下载: https://www.mysql.com/downloads/      二, 安装过程 1, 双击打开 安装 这里是进行数据库配置: 端口默认为3306 这里我们更改为1207 ...

  3. np一些基本操作1

    ##生成一个一维数组import numpy as np;nb7 = np.arange(0,100,2);print(nb7)print("======================== ...

  4. 使用传统javaweb进行文件上传

    使用传统文件上传方式 1.配置依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sou ...

  5. iTerm2配色和去掉profile提示框

    效果: 配色方案代码地址: https://github.com/mbadolato/iTerm2-Color-Schemes 点击最右边的绿色区域,再点击  “import”, 打开刚下载解压好的文 ...

  6. mapreduce.Job: Running job: job_1553100392548_0001

    这几天一直在尝试一个mapreduce的例子,但是一直都是卡在mapreduce.Job: Running job: job_1553100392548_0001,查看日志也不报错,查看每个配置文件没 ...

  7. Linux 修改环境变量,重定向

    1.Linux下更改(当前用户)环境变量:在terminal下输入vim ~/.profile进入后,在最后一行添加PATH="-----------------:$PATH",添 ...

  8. c语言一个例子对比php学习随记

    今天开始学写一些简单的C例子,发现很多和PHP不一样的地方,做个笔记. #include <stdio.h> int main(void) { int a,b; printf(" ...

  9. 获取请求header的各种方法

    部分代码非原创  不定期更新 PHP function get_all_header() { // 忽略获取的header数据.这个函数后面会用到.主要是起过滤作用 $ignore = array(' ...

  10. MATLAB技巧—sort和sortrows函数

    MATLAB技巧-sort和sortrows函数 1.sort函数 sort函数用于对数据进行排序,通过help sort命令,可以查找到sort函数的具体用法: Y = SORT(X,DIM,MOD ...