PyQT5相关知识

这篇博客深入介绍了PyQT5中的表格操作,包括定位、排序、单元格对齐、合并及尺寸设置;树节点的添加响应与增删改;选项卡、堆栈窗口和滚动条的用法;定时器的定时执行与关闭;多线程的信号实现;窗口间参数传递;绘图技术;以及利用QPropertyAnimation进行窗口动画控制。
摘要由CSDN通过智能技术生成

PyQT5

教程链接

表格的用法

定位表格
# 搜索满足条件的Cell
text = '(1'
# 模糊查询
items = tableWidget.findItems(text,QtCore.Qt.MatchStartsWith)
# 精确查找
items = tableWidget.findItems(text, QtCore.Qt.MatchExactly)
row = item.row()
# 定位到指定的行
tableWidget.verticalScrollBar().setSliderPosition(row)
单元格排序
# 单元格代码忽略
# 按钮
self.button = QPushButton('排序')
# 按钮绑定
self.button.clicked.connect(self.order)
# 设置排列方式
self.orderType = Qt.DescendingOrder

def order(self):
    # 调整排序方式,顺序和倒序
    if self.orderType == Qt.DescendingOrder:
        self.orderType = Qt.AscendingOrder
    else:
        elf.orderType = Qt.DescendingOrder
    # 给第三列按规则排序    
    self.tableWidget.sortItems(2,self.orderType)
单元格的对齐方式设置
# 创建单元格
newItem = QTableWidgetItem('单元格')
# 可以设置多个对齐方式
newItem.setTextAlignment(Qt.AlignRight | Qt.AlignBottom)
# 但不一定都管用
newItem.setTextAlignment(Qt.AlignCenter | Qt.AlignBottom)
合并单元格
# 可以理解为指定坐标(row,col),高和宽
setSpan(row,col,要合并的行数,要合并的列数)
newItem = QTableWidgetItem('第二列')
tableWidget.setItem(0,1,newItem)
# 第一行二列, 占两行一列
tableWidget.setSpan(0,1,2,1)
设置单元格尺寸
# 设置行高
tableWidget.setRowHeight(0, 80)
# 设置列宽
tableWidget.setColumnWidth(2, 120)
单元格图文混排
# 对应的单元格插图片就好了 
newItem = QTableWidgetItem(QIcon('../../../../../图片/Saved Pictures/1022933.jpg'),'背包')
# 设置图片尺寸
tablewidget.setIconSize(QSize(300,200))
item = QTableWidgetItem()
item.setIcon(QIcon('../../../../../图片/Saved Pictures/1022933.jpg'))
表格展示上下文菜单
# 首先开启可以右键单击
self.tableWidget.setContextMenuPolicy(Qt.CustomContextMenu)
# 触发右键
self.tableWidget.customContextMenuRequested.connect(self.generateMenu)
def generateMenu(self,pos):
    # pos 为鼠标右击时相对于窗口的坐标
    # 拿行数
    for i in self.tableWidget.selectionModel().selection().indexes():
        rowNum = i.row()
 	# 如果选择的行索引小于2,弹出上下文菜单
    if rowNum < 2:
        # 创建上下文菜单
        menu = QMenu()
        # 添加菜单项
        item1 = menu.addAction("菜单项1")
        item2 = menu.addAction("菜单项2")
        # 因为下方需要传递的坐标是相对屏幕的,而pos是相对窗口的,所以需要转换
        screenPos = self.tableWidget.mapToGlobal(pos)
        # 被阻塞,没有点击的话不会往下走
        # 这里传坐标要相对于屏幕来
        action = menu.exec(screenPos)
        if action == item1:
            print('选择了第1个菜单项',self.tableWidget.item(rowNum,0).text(),
                  self.tableWidget.item(rowNum,1).text(),
                  self.tableWidget.item(rowNum, 2).text())
		elif action == item2:
            print('选择了第2个菜单项',self.tableWidget.item(rowNum,0).text(),
                      self.tableWidget.item(rowNum,1).text(),
                      self.tableWidget.item(rowNum, 2).text())
            else:
                  return

树节点的用法

树节点添加响应
# 点击响应
self.tree.clicked.connect(self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值