PS:本文主要用于自我整理总结,方便后续参考,如果恰好帮助到你,也是件值得高兴的事
先展示下这次实现的具体功能:
具体程序如下:
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_())