代码拉取完成,页面将自动刷新
import ctypes
import ctypes.wintypes
import sys
from PySide2.QtWidgets import QApplication, QMainWindow
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import *
from PySide2.QtCore import *
from PySide2 import QtCore
from PySide2.QtGui import *
from PySide2.QtSvg import *
from PySide2 import QtGui
from window_ui import Ui_MainWindow
# Windows constants
WM_NCHITTEST = 0x0084
HTCAPTION = 2
HTLEFT = 10
HTRIGHT = 11
HTTOP = 12
HTTOPLEFT = 13
HTTOPRIGHT = 14
HTBOTTOM = 15
HTBOTTOMLEFT = 16
HTBOTTOMRIGHT = 17
class FrameLessWindow(Ui_MainWindow, QMainWindow):
def __init__(self) -> None:
super().__init__()
self._drag = False
self._corner_drag = False
self._bottom_drag = False
self._right_drag = False
self._padding = 5
self.setupUi(self)
self.setWindowFlags(Qt.FramelessWindowHint) # 隐藏边框
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
if event.pos().x() > self.width() - self._padding and event.pos().y() > self.height() - self._padding:
self._corner_drag = True
elif event.pos().x() > self.width() - self._padding:
self._right_drag = True
elif event.pos().y() > self.height() - self._padding:
self._bottom_drag = True
else:
self._drag = True
self.move_DragPosition = event.globalPos() - self.pos()
event.accept()
def mouseMoveEvent(self, event):
if Qt.LeftButton and self._drag:
self.move(event.globalPos() - self.move_DragPosition)
event.accept()
elif Qt.LeftButton and self._right_drag:
self.resize(event.pos().x(),self.height())
event.accept()
elif Qt.LeftButton and self._bottom_drag:
self.resize(self.width(),event.pos().y())
event.accept()
elif Qt.LeftButton and self._corner_drag:
self.resize(event.pos().x(),event.pos().y())
event.accept()
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
self._drag = False
self._corner_drag = False
self._bottom_drag = False
self._right_drag = False
def nativeEvent(self, eventType, message):
if eventType == b"windows_generic_MSG":
msg = ctypes.wintypes.MSG.from_address(message.__int__())
if msg.message == WM_NCHITTEST:
x = msg.lParam & 0xffff
y = (msg.lParam >> 16) & 0xffff
pos = self.mapFromGlobal(QtCore.QPoint(x, y))
if pos.x() < 5:
if pos.y() < 5:
return True, HTTOPLEFT
elif pos.y() > self.height() - 5:
return True, HTBOTTOMLEFT
else:
return True, HTLEFT
elif pos.x() > self.width() - 5:
if pos.y() < 5:
return True, HTTOPRIGHT
elif pos.y() > self.height() - 5:
return True, HTBOTTOMRIGHT
else:
return True, HTRIGHT
elif pos.y() < 5:
return True, HTTOP
elif pos.y() > self.height() - 5:
return True, HTBOTTOM
return False
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。