当前位置: 首页 > news >正文

广州网站建设 骏域网站建设个人小型网站建设

广州网站建设 骏域网站建设,个人小型网站建设,网站备案号位置,顺德移动端网站建设pyqt 按钮自动布局方案 效果展示支持功能核心代码实现 效果展示 支持功能 添加、编辑、删除按钮根据界面大小自动调节按钮布局 核心代码实现 资源下载 from PyQt5.QtWidgets import QWidget, QMenu, QPushButton, QInputDialog, QSpacerItem, QSizePolicy, QAction, QLineE…

pyqt 按钮自动布局方案

  • 效果展示
  • 支持功能
  • 核心代码实现

效果展示

在这里插入图片描述

支持功能

  • 添加、编辑、删除按钮
  • 根据界面大小自动调节按钮布局

核心代码实现

资源下载

from PyQt5.QtWidgets import QWidget, QMenu, QPushButton, QInputDialog, QSpacerItem, QSizePolicy, QAction, QLineEdit
from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtGui import QCursor
from flowbtnwidget import Ui_Formclass FlowBtnWidgetMng(QWidget, Ui_Form):btnClicked = pyqtSignal(str)def __init__(self, parent=None):super(FlowBtnWidgetMng, self).__init__(parent)self.setupUi(self)self.btnList = []self.context_menu = QMenu(self)self.addMenu(["添加按钮"])for i in range(10):btnName = "按钮"*(i + 1) + "%s" %(i)self.addBtn(btnName)def contextMenuEvent(self, event):self.context_menu.exec(event.globalPos())def resizeEvent(self, event):self.update()def addMenu(self, menuList):for one in menuList:action = self.context_menu.addAction(one)action.triggered.connect(self.slotMenuTriggered)def slotMenuTriggered(self):btn = self.sender()text = btn.text()if text == "添加按钮":name, ok = QInputDialog.getText( self, '添加按钮', '按钮名')if ok:self.addBtn(name)def addBtn(self, btnName):pushButton = QPushButton(btnName)pushButton.clicked.connect(self.slotBtnClicked)pushButton.setContextMenuPolicy(Qt.CustomContextMenu)pushButton.customContextMenuRequested.connect(self.slotBtnMenuShow)self.btnList.append(pushButton)self.update()def slotBtnClicked(self):self.btnClicked.emit(self.sender().text())def slotBtnMenuShow(self):btn = self.sender()btnMenu = QMenu(self)for oneMenu in ["编辑按钮", "删除按钮"]:action = QAction(oneMenu, btn)btnMenu.addAction(action)action.triggered.connect(self.slotBtnMenuOp)btnMenu.popup(QCursor.pos())def slotBtnMenuOp(self):text = self.sender().text()btn = self.sender().parent()if text == "编辑按钮":name, ok = QInputDialog.getText(self, '编辑按钮', '按钮名', QLineEdit.EchoMode.Normal, text = btn.text())if ok:btn.setText(name)elif text == "删除按钮":self.btnList.remove(btn)btn.deleteLater()self.update()def update(self):if not self.btnList:returnfor _ in range(self.btnLayout.count()):self.btnLayout.takeAt(0)maxWidth = self.width()rowWidgetNum = 1while True:groupMaxWidth = 0for group in range(0, rowWidgetNum):groupWidth = 0for index in range(group, len(self.btnList), rowWidgetNum):groupWidth = max(groupWidth, self.btnList[index].sizeHint().width())groupMaxWidth += groupWidthif groupMaxWidth > maxWidth:rowWidgetNum -= 1breakelif len(self.btnList) <= rowWidgetNum:breakrowWidgetNum += 1if rowWidgetNum == 0:rowWidgetNum = 1for index, oneBtn in enumerate(self.btnList):self.btnLayout.addWidget(oneBtn, index / rowWidgetNum, index % rowWidgetNum, 1, 1)if len(self.btnList) == rowWidgetNum or rowWidgetNum == 1:self.btnLayout.addItem(QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum), 0, rowWidgetNum, 1, 1)self.btnLayout.addItem(QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding), (index / rowWidgetNum) + 1, 0, 1, 1)
http://www.dtcms.com/a/471063.html

相关文章:

  • 记事本做网站格式羽毛球赛事在哪里看
  • 网络物理隔离机制有哪些
  • 国内知名网站建设伺阿里云 wordpress 安装
  • 抓取淘宝商品详情商品数据API接口调用说明文档|获取淘宝商品价格主图数据等
  • 绵阳网站建设多少钱wordpress不跳转
  • 手机网站模板代码电脑课做网站的作业
  • Linux中的进程管理------ps,job
  • 做网站建设的公司有哪些方面自己免费怎么制作网站吗
  • 内网穿透的多种使用场景:远程办公、IoT 设备管理全解析
  • 开源手机网站cms网页优化公司
  • QWidget实现文本选中与复制功能
  • 宁晋企业做网站专门做养老院的网站
  • 网站广告素材网站管理员怎么做联系方式
  • 演化搜索与群集智能:五种经典算法探秘
  • 2.2基本数据类型
  • 新手小白,想看懂任何交易平台的交易
  • seo的网站特征全网营销系统是不是传销
  • 灯饰外贸网站青岛软件开发公司排名
  • A Density Clustering-Based CFAR Algorithm for Ship Detection in SAR Images
  • 初识RL(Reinforcement Learning,强化学习)
  • 自己做网站需要学什么软件下载云主机有什么用
  • 网站名称可以更换吗网络营销方式如何体现其连接功能及顾客价值
  • 天府新区规划建设国土局网站黑彩网站怎么建设
  • 百度网站收录提交做出网站
  • 记录两种好用常用的xpath定位方式
  • 怎么选一个适合自己的网站国外建站网址
  • 国外主题网站seo最新快速排名
  • 网站类型定位分析网站建设160页答案
  • spring webflux
  • 福永网站设计设计常用网站