PyQt5無邊框後窗口的移動方法
阿新 • • 發佈:2019-02-06
由於隱藏了標題欄無法通過點選標題欄來實現視窗的移動,這時候我們可以通過滑鼠事件來移動視窗
第一步:判斷滑鼠左鍵是否被按下,如果按下則將flag設為True並獲取當前的位置
第二步:判斷滑鼠是否移動並且左鍵被按下,若移動了計算移動的距離在移動視窗
第三步:若滑鼠釋放了則將flag設為False
具體做法:重寫視窗類自帶的三個函式
def mousePressEvent(self, event): if event.button()==Qt.LeftButton: self.m_flag=True self.m_Position=event.globalPos()-self.pos() #獲取滑鼠相對視窗的位置 event.accept() self.setCursor(QCursor(Qt.OpenHandCursor)) #更改滑鼠圖示 def mouseMoveEvent(self, QMouseEvent): if Qt.LeftButton and self.m_flag: self.move(QMouseEvent.globalPos()-self.m_Position)#更改視窗位置 QMouseEvent.accept() def mouseReleaseEvent(self, QMouseEvent): self.m_flag=False self.setCursor(QCursor(Qt.ArrowCursor))
最後最小化和關閉可以設定兩個按鈕,通過點選按鈕來觸發
@pyqtSlot()
def on_pushButton_clicked(self):
"""
關閉視窗
"""
self.close()
@pyqtSlot()
def on_pushButton_2_clicked(self):
"""
最小化視窗
"""
self.showMinimized()
ps :設定無邊框和背景透明
# 設定窗體無邊框 # self.setWindowFlags(Qt.FramelessWindowHint) # 設定背景透明 # self.setAttribute(Qt.WA_TranslucentBackground)
效果圖
win10自帶的錄屏只能錄當前軟體那個區域。。。。。。。
就這樣吧