Windows环境下使用Python设计应用软件——【6】pyqt通过勾选框选择对TableWidget表格数据进行添加/删减

PS:本文主要用于自我整理总结,方便后续参考,如果恰好帮助到你,也是件值得高兴的事
先展示下这次实现的具体功能:
Windows环境下使用Python设计应用软件——【6】pyqt通过勾选框选择对TableWidget表格数据进行添加/删减_第1张图片
具体程序如下:

import os
import sys

from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import Qt, QRect
from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QTableWidgetItem

from untitled import Ui_MainWindow  # 导入设计界面


# 设计的弹窗
class smallWindow(QWidget):
    def __init__(self):
        super(smallWindow, self).__init__()
        self.resize(100, 100)  # 窗体的大小(宽,高)
        self.setWindowTitle("我是弹窗")  # 窗体的标题
        self.setWindowFlags(Qt.WindowTitleHint)  # 显示窗口标题栏(这样写出来要什么,就可以将右上角的按钮去掉)
        self.pushButton = QPushButton(self)  # 在弹窗中定义一个按钮控件
        self.pushButton.setGeometry(QRect(30, 30, 40, 40))  # 参数含义:(横坐标【即离左边框的距离】,纵坐标【即离上边框的距离】,控件的宽,控件的高)
        self.pushButton.setText('确定')


class mainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super(mainWindow, self).__init__()
        self.setupUi(self)  # 初始化窗口

        self.pushButton.clicked.connect(self.openWindow)  # 将点击控件的动作和跳出弹窗的功能函数相连接
        self.checkBox_1.stateChanged.connect(self.check_1)  # 勾选动作和函数的连接
        self.checkBox_2.stateChanged.connect(self.check_2)
        self.checkBox_3.stateChanged.connect(self.check_3)

        self.tablelist = []  # 存放勾选的数据

    # 弹窗函数
    def openWindow(self):
        self.smallWindow_ui = smallWindow()
        self.smallWindow_ui.show()
        self.smallWindow_ui.pushButton.clicked.connect(self.smallWindow_ui.close)  # 点击按钮可以关闭窗口

    # 勾选函数
    def check_1(self, state):
        if state == Qt.Checked:  # 勾选的话
            self.tablelist.append('一')
            self.table()  # 更新表格
        else:
            self.tablelist.remove('一')
            self.table()

    def check_2(self, state):
        if state == Qt.Checked:
            self.tablelist.append('二')
            self.table()
        else:
            self.tablelist.remove('二')
            self.table()

    def check_3(self, state):
        if state == Qt.Checked:
            self.tablelist.append('三')
            self.table()
        else:
            self.tablelist.remove('三')
            self.table()

    # 对表格的功能函数
    def table(self):
        self.tableWidget.clearContents()  # clearContents这个清空所有内容不包括标题头; clear清空掉表格内所有内容,包括标题头
        self.tableWidget.setRowCount(len(self.tablelist))  # 根据勾选的数目来设置行数
        self.tableWidget.setColumnCount(1)  # 设置列数
        self.tableWidget.setHorizontalHeaderLabels(['勾选的数'])  # 设置表格的表头
        num = 0
        for content in self.tablelist:  # 将tablelist中的元素依次写进表格中
            table_content = QTableWidgetItem(content)  # 将str类型变量转化,生成了一个QTableWidgetItem的对象
            self.tableWidget.setItem(num, 0, table_content)  # 列表填写内容,参数含义(行数,列数,内容)
            num += 1


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ui = mainWindow()
    ui.show()
    sys.exit(app.exec_())

你可能感兴趣的:(python,pyqt,开发工具)