你好。我正在尝试修复PyQt5窗口的一个问题,该窗口有一个自定义标题栏。如果将窗口最大化,并将光标悬停在标题栏上并拖动窗口以移动它,则窗口将调整大小,您将能够正常移动它
但是,当窗口在使用光标单击并拖动方法最大化之前恢复以前的状态时,光标不会抓住标题栏上的位置来移动窗口,而是,它与单击并拖动方法的启动位置相同,因此光标位于屏幕的另一侧,神秘地移动窗口
QCursor.pos()
获取光标位置,但这会在实际屏幕上返回全局位置,但我想我需要在窗口上使用它,以便我可以尝试使光标抓住标题栏。QCursor.pos()
,然后我使用QCursor.setPos()
设置以前捕获的位置,它确实起作用,但随后会导致窗口随之移动,并且光标也偏离窗口内的预期夹点位置李>class MainWindow(QMainWindow): # Main Window
def __init__(self): # Main initialisation
super(MainWindow, self).__init__() # Call superclass
# UI Setup
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Move Window
def move_window(event):
# Restore Window (before movement)
if UIFunctions.return_status(self) == 1: # If maximized
UIFunctions.maximize_restore(self)
# QCursor.setPos(self.previous_cursor_pos)
if event.buttons() == Qt.LeftButton: # If Left Click (move window)
self.move(self.pos() + event.globalPos() - self.dragPos)
self.dragPos = event.globalPos()
event.accept()
# Set Title Bar
self.ui.title_bar.mouseMoveEvent = move_window
# Set UI Definitions
UIFunctions.ui_definitions(self)
self.show() # Show main window
def mousePressEvent(self, event): # Mouse Press Event
self.dragPos = event.globalPos()
(使用移动窗口方法的主类)
Python版本:Python 3.8.6
使用的模块:PySide2
很高兴提供更多信息
目前没有回答
相关问题 更多 >
编程相关推荐