zoukankan      html  css  js  c++  java
  • 【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,),('2', 1, 1, ),('3', 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()
  • 相关阅读:
    OutputCache详解
    C#数值类型的转换
    C#变量类型转换
    C#和.net
    数组
    mvc
    C#部分基础知识
    项目开发-->高级功能汇总
    项目开发-->基础功能汇总
    C#基础篇
  • 原文地址:https://www.cnblogs.com/wanghong1994/p/12083225.html
Copyright © 2011-2022 走看看