"""
無邊框
頂層窗口的特定操作封裝重構(gòu)
"""
from PyQt5.Qt import *
import sys
class Window(QWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 設(shè)置無標(biāo)題欄方法2
self.setWindowFlags(Qt.FramelessWindowHint)
# 設(shè)置透明度
self.setWindowOpacity(0.9)
# 設(shè)置控件
self.setWindowTitle('窗口特定操作案例')
# 設(shè)置大小
self.resize(500, 500)
# 規(guī)定大小
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("關(guān)閉")
close_btn.resize(self.btn_w, self.btn_h)
# 最大標(biāo)簽
max_btn = QPushButton(self)
self.max_btn = max_btn
max_btn.setText("最大化")
max_btn.resize(self.btn_w, self.btn_h)
# 最小標(biāo)簽
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)
# 測試 -控制最大化按鈕變大/恢復(fù)功能
def max_normal():
if self.isMaximized():
self.showNormal()
max_btn.setText('最大化')
else:
self.showMaximized()
max_btn.setText('恢復(fù)')
max_btn.pressed.connect(max_normal)
min_btn.pressed.connect(self.showMinimized)
def resizeEvent(self, QResizeEvent):
"""解決最大化按鈕不會隨窗口自動改變位置的bug"""
print('窗口大小位置發(fā)生了改變')
# 關(guān)閉位置
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.創(chuàng)建一個程序?qū)ο?app = QApplication(sys.argv)
# 設(shè)置無標(biāo)題欄方法1
# window = QWidget(flags=Qt.FramelessWindowHint)
# 創(chuàng)建控件
window = Window()
# 展示控件
window.show()
# 退出
sys.exit(app.exec_())
窗口操作三(封裝)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- Xshell6 選擇查看-->撰寫-->撰寫欄-->選擇全部會話:如下圖 點(diǎn)擊選擇全部會話即可
- 前面講完概述、原理以及helloworld,現(xiàn)在就講下怎樣的POI的EXCEL導(dǎo)出工具可以適用于各種情況吧。后面再...
- 項目已添加IjkPlayer支持,后續(xù)逐漸完善其他功能。地址:https://github.com/xiaoyan...
- vim 基本操作,拷貝,粘貼,刪除,行內(nèi)移動,查找與替換,多窗口,橫向豎向分屏,放大當(dāng)前窗口 1.拷貝、粘貼、刪除...
- 今天課程 1.主要圍繞了解設(shè)計師成長歷程,了解設(shè)計師的日常工作流程,...