"""
无边框
顶层窗口的特定操作封装重构
"""
from PyQt5.Qt import *
import sys
class Window(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 设置无标题栏方法2
self.setWindowFlags(Qt.FramelessWindowHint)
# 设置透明度
self.setWindowOpacity(0.9)
# 设置控件
self.setWindowTitle('窗口特定操作案例')
# 设置大小
self.resize(500, 500)
# 规定大小
self.top_margin = 10
self.btn_w = 80
self.btn_h = 40
self.setup_ui() # 这个顺序很重要!放到前面就报错
def setup_ui(self):
# 添加三个子控件 - 窗口右上角
close_btn = QPushButton(self)
self.close_btn = close_btn
close_btn.setText("关闭")
close_btn.resize(self.btn_w, self.btn_h)
# 最大标签
max_btn = QPushButton(self)
self.max_btn = max_btn
max_btn.setText("最大化")
max_btn.resize(self.btn_w, self.btn_h)
# 最小标签
min_btn = QPushButton(self)
self.min_btn = min_btn
min_btn.setText("最小化")
min_btn.resize(self.btn_w, self.btn_h)
close_btn.pressed.connect(self.close)
# 测试 -控制最大化按钮变大/恢复功能
def max_normal():
if self.isMaximized():
self.showNormal()
max_btn.setText('最大化')
else:
self.showMaximized()
max_btn.setText('恢复')
max_btn.pressed.connect(max_normal)
min_btn.pressed.connect(self.showMinimized)
def resizeEvent(self, QResizeEvent):
"""解决最大化按钮不会随窗口自动改变位置的bug"""
print('窗口大小位置发生了改变')
# 关闭位置
window_w = self.width()
close_btn_x = window_w - self.btn_w
close_btn_y = self.top_margin
self.close_btn.move(close_btn_x, close_btn_y)
# 最大化位置
max_btn_x = close_btn_x - self.btn_w
max_btn_y = self.top_margin
self.max_btn.move(max_btn_x, max_btn_y)
# 最小化位置
min_btn_x = max_btn_x - self.btn_w
min_btn_y = self.top_margin
self.min_btn.move(min_btn_x, min_btn_y)
# 1.创建一个程序对象
app = QApplication(sys.argv)
# 设置无标题栏方法1
# window = QWidget(flags=Qt.FramelessWindowHint)
# 创建控件
window = Window()
# 展示控件
window.show()
# 退出
sys.exit(app.exec_())
窗口操作三(封装)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- Xshell6 选择查看-->撰写-->撰写栏-->选择全部会话:如下图 点击选择全部会话即可
- 前面讲完概述、原理以及helloworld,现在就讲下怎样的POI的EXCEL导出工具可以适用于各种情况吧。后面再...
- 项目已添加IjkPlayer支持,后续逐渐完善其他功能。地址:https://github.com/xiaoyan...
- vim 基本操作,拷贝,粘贴,删除,行内移动,查找与替换,多窗口,横向竖向分屏,放大当前窗口 1.拷贝、粘贴、删除...