PYQT5 通过动态加载UI的方式,如何实现窗口无边框且能够移动?
我就是不懂在动态加载UI的情况下,把mousePressevent, mouseMoveevent ,mouseReleaseEvent函数调用起来
class Main_window(QMainWindow):
_startPos = None
_endPos = None
_isTracking = False
def __init__(self):
super().__init__()
# 从文件中加载UI定义
self.ui = uic.loadUi("plc_backup_tool.ui")
# 参数文件地址
self.msg = '请输入参数文件地址!'
self.ui.parameter_file_address.setText(self.msg)
# 开始备份按钮disable
self.ui.start_backup.setEnabled(False)
# 定时刷新检查文件参数内容地址不为空!
self.time1 = QTimer()
self.time1.start(100)
self.time1.timeout.connect(self.button_enable)
def mouseMoveEvent(self, e: QMouseEvent): # 重写移动事件
self._endPos = e.pos() - self._startPos
self.move(self.pos() + self._endPos)
def mousePressEvent(self, e: QMouseEvent):
if e.button() == Qt.LeftButton:
self._isTracking = True
self._startPos = QPoint(e.x(), e.y())
def mouseReleaseEvent(self, e: QMouseEvent):
if e.button() == Qt.LeftButton:
self._isTracking = False
self._startPos = None
self._endPos = None
def button_enable(self):
"""定时刷新界面检查参数文件地址 有无内容,有内容了才显示备份按钮"""
if self.ui.parameter_file_address.text() != "" and self.ui.parameter_file_address.text() != self.msg:
self.ui.start_backup.setEnabled(True)
self.time1.stop()
if name == "main":
# 固定的,PyQt5程序都需要QApplication对象。sys.argv是命令行参数列表,确保程序可以双击运行
app = QApplication(sys.argv)
app.setStyle("Fusion")
# 初始化
myWin = Main_window()
# 只显示最小化按钮
# myWin.ui.setWindowFlags(Qt.WindowMinimizeButtonHint)
# 窗口无边框化
myWin.ui.setWindowFlags(Qt.FramelessWindowHint)
# 窗口有边框无最小最大按钮
# myWin.ui.setWindowFlags(Qt.CustomizeWindowHint)
myWin.ui.show()
# 程序运行,sys.exit死循环监控屏幕。
sys.exit(app.exec_())
实现无边框窗口需要设置参数。setWindowFlag(Qt::FramelessWindowHint); 隐藏标题栏就是无边框
然后移动就是需要重写mousePressevent, mouseMoveevent ,mouseReleaseEvent函数
具体实现你可以参考下我的博客。虽然我用的是qt写的。但是原理都一样
https://blog.csdn.net/weixin_43676892/article/details/112560496?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165545505116782390555443%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165545505116782390555443&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-112560496-null-null.nonecase&utm_term=qt%E6%97%A0%E8%BE%B9%E6%A1%86&spm=1018.2226.3001.4450