PyQt基础第3篇——自定义窗口(隐藏最大最小化按钮)
来源:互联网 发布:淘宝水族箱品牌排行榜 编辑:程序博客网 时间:2024/06/06 08:38
很多Qter被网上类似于QQ和360的Qt界面吸引,如果想有这样的“神通”,那第一步就要学会怎么自定义一个窗体,来实现自己美化后的最大化最小化按钮。本文先不涉及美化图片。先从实现的角度来展示一个自定义窗体,体验一下PyQt下的自定义窗体。
代码如下:(可直接运行,支持拖动)
# -*- coding:utf-8 -*-import sysfrom PyQt5.QtWidgets import QDialog from PyQt5.QtWidgets import QPushButtonfrom PyQt5.QtWidgets import QToolButtonfrom PyQt5.QtWidgets import QApplicationfrom PyQt5.QtWidgets import QHBoxLayoutfrom PyQt5.QtWidgets import QVBoxLayoutfrom PyQt5.QtWidgets import QStylefrom PyQt5.QtGui import QPixmapfrom PyQt5.QtGui import QIconfrom PyQt5.QtGui import QPainterfrom PyQt5.QtCore import Qtfrom PyQt5.QtCore import QPointclass CustomDoialog(QDialog): def __init__(self,parent = None): super().__init__(parent) #设置窗体无边框 self.setWindowFlags(Qt.FramelessWindowHint) #获取最大化,最小化和关闭按钮 pixMin = self.style().standardIcon(QStyle.SP_TitleBarMinButton) pixMax = self.style().standardIcon(QStyle.SP_TitleBarMaxButton) pixNormal = self.style().standardIcon(QStyle.SP_TitleBarNormalButton) pixClose = self.style().standardIcon(QStyle.SP_TitleBarCloseButton) minButton = QToolButton() maxButton = QToolButton() normalButton = QToolButton() closeButton = QToolButton() minButton.setIcon(QIcon(pixMin)) maxButton.setIcon(QIcon(pixMax)) closeButton.setIcon(QIcon(pixClose)) #布局设置 titleLayout = QHBoxLayout() titleLayout.addStretch() titleLayout.addWidget(minButton) titleLayout.addWidget(maxButton) titleLayout.addWidget(closeButton) mainLayout = QVBoxLayout() mainLayout.addLayout(titleLayout) mainLayout.addStretch() self.setLayout(mainLayout) self.__leftButtonPress = False #判断鼠标是否按下 self.__movePoint = QPoint() #获取开始移动的点,用来计算移动位置 #重写鼠标按下事件 def mousePressEvent(self,event): if event.button() == Qt.LeftButton: self.__leftButtonPress = True self.__movePoint = event.pos() #重写鼠标移动事件 def mouseMoveEvent(self,event): if self.__leftButtonPress: globalPos = event.globalPos() self.move(globalPos - self.__movePoint) #重写鼠标抬起事件 def mouseReleaseEvent(self,event): self.__leftButtonPress = False if __name__ == "__main__": app = QApplication(sys.argv) window = CustomDoialog() window.show() sys.exit(app.exec_())效果如图:
0 0
- PyQt基础第3篇——自定义窗口(隐藏最大最小化按钮)
- QT窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)
- Qt窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)
- Q窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)
- QT窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)
- QT窗口操作函数(窗口最大化,全屏,隐藏最大化最小化按钮)
- PyQt基础第0篇——环境配置
- PyQt基础第4篇——导入图片资源
- PyQt窗口最小化到托盘
- 操作系统按钮(最大、最小化按钮)
- VC按最小化、关闭按钮、Esc都隐藏主窗口
- C#隐藏其他程序窗口以及添加最小化/最大化按钮
- WPF中隐藏窗口最小化、最大化和关闭按钮
- Qt最小化按钮将窗口隐藏到托盘
- 窗口最大化最大最小化关闭按钮超出屏幕 WM_GETMINMAXINFO
- C++MFC程序窗口无法显示最大最小化按钮问题
- 使窗体不能最小化(不隐藏最小化按钮)
- PyQT——禁止显示窗口最大化按钮及禁止调整窗口大小
- Android网络优先级及更改
- 终结线程的几个方法
- jeesite 下拉菜单
- Spring整合MyBatis
- LocalBroadcastManager源码解析
- PyQt基础第3篇——自定义窗口(隐藏最大最小化按钮)
- The following classes could not be found: - android.support.v7.internal.app.WindowDecorActionBar
- HDU-1213-How Many Tables(并查集)
- POJ, 3255 Roadblocks(次短路径)
- Java EE中关于配置文件web.xml杂谈一
- bzoj 4436: [Cerc2015]Kernel Knights
- 可删除某些字符的最长回文字符串(2016腾讯在线笔试题)
- jsp中EL表达式
- 网站评论功能数据库设计和开发