PyQt5项目中无边框后窗口出现移动问题如何解决

  介绍

这篇文章将为大家详细讲解有关PyQt5项目中无边框后窗口出现移动问题如何解决,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

第一步:判断鼠标左键是否被按下,如果按下则将标志设为真实并获取当前的位置

第二步:判断鼠标是否移动并且左键被按下,若移动了计算移动的距离在移动窗口

第三步:若鼠标释放了则将标志设为假

具体做法:重写窗口类自带的三个函数

,, def  mousePressEvent(自我,事件):   ,,,if  event.button ()==Qt.LeftButton:   ,,,,self.m_flag=True   ,,,,,self.m_Position=event.globalPos () -self.pos(), #获取鼠标相对窗口的位置   ,,,,,event.accept ()   ,,,,,self.setCursor (QCursor (Qt.OpenHandCursor)), #更改鼠标图标   ,,,,,   def 才能摇干(自我,QMouseEvent):   ,,,if  Qt.LeftButton 以及self.m_flag:,   ,,,,,self.move (QMouseEvent.globalPos () -self.m_Position) #更改窗口位置   ,,,,,QMouseEvent.accept ()   ,,,,,   def 才能;mouseReleaseEvent(自我,,QMouseEvent):   ,,self.m_flag=False   ,,,self.setCursor (QCursor (Qt.ArrowCursor))

最后最小化和关闭可以设置两个按钮,通过点击按钮来触发

,, @pyqtSlot ()   def 才能on_pushButton_clicked(自我):   ,,,,,,   ,,,关闭窗口   ,,,,,,   ,,,self.close ()   ,,   @pyqtSlot才能()   def 才能on_pushButton_2_clicked(自我):   ,,,,,,   ,,,最小化窗口   ,,,,,,   ,,,self.showMinimized ()

ps:设置无边框和背景透明

#,设置窗体无边框   #,self.setWindowFlags (Qt.FramelessWindowHint)   #,设置背景透明   #,self.setAttribute (Qt.WA_TranslucentBackground)

效果图

 PyQt5项目中无边框后窗口出现移动问题如何解决

win10自带的录屏只能录当前软件那个区域.......

就这样吧~

<强>补充:pyqt5_控件_自定义无边框窗体拖动

我就废话不多说了,大家还是直接看代码吧~

得到PyQt5.QtWidgets  import  *   得到PyQt5.QtCore  import  *   得到PyQt5.QtGui  import  *   import 系统   class 示例(QWidget):   时间=_startPos 才能;没有   时间=_endPos 才能;没有   _isTracking 才能=False   def 才能__init__(自我):   ,,,超级(). __init__ ()   ,,,self._initUI ()   def 才能_initUI(自我):   ,,,self.setFixedSize (QSize (400,, 400))   ,,,self.setWindowFlags (Qt.FramelessWindowHint), #,无边框   ,,,self.show ()   def 才能;摇干(e:自我,还以为;QMouseEvent):, #,重写移动事件   ,,,self._endPos =, e.pos(),安康;self._startPos   ,,,self.move (self.pos (), +, self._endPos)   def 才能;mousePressEvent (e:自我,还以为;QMouseEvent):   ,,,if  e.button (),==, Qt.LeftButton:   ,,,,,self._isTracking =,真的   ,,,,,self._startPos =, QPoint (e.x (),, e.y ())   def 才能;mouseReleaseEvent (e:自我,还以为;QMouseEvent):   ,,,if  e.button (),==, Qt.LeftButton:   ,,,,,self._isTracking =False   ,,,,,self._startPos =,没有   ,,,,,self._endPos =,没有   if  __name__ ==, & # 39; __main__ # 39;:   时间=app 才能;QApplication (sys.argv)   ex 才能=,例()   sys.exit才能(app.exec_ ())

关于PyQt5项目中无边框后窗口出现移动问题如何解决就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

PyQt5项目中无边框后窗口出现移动问题如何解决