mirror of
https://github.com/283375/arcaea-offline-pyside-ui.git
synced 2025-07-01 12:26:26 +00:00
init
This commit is contained in:
54
ui/extends/shared/utils.py
Normal file
54
ui/extends/shared/utils.py
Normal file
@ -0,0 +1,54 @@
|
||||
from PySide6.QtCore import QPoint
|
||||
from PySide6.QtGui import QGuiApplication, QScreen
|
||||
from PySide6.QtWidgets import QWidget
|
||||
|
||||
|
||||
def keepWidgetInScreen(widget: QWidget, screen: QScreen = None):
|
||||
"""ensure your widget is visible"""
|
||||
|
||||
# see https://doc.qt.io/qt-6/application-windows.html
|
||||
# for why using frameGeometry.width() / frameGeometry.height()
|
||||
# instead of width() / height().
|
||||
|
||||
screen = screen or QGuiApplication.primaryScreen()
|
||||
screenAvailableGeometry = screen.availableGeometry()
|
||||
|
||||
# X boundary
|
||||
if widget.pos().x() < screenAvailableGeometry.x():
|
||||
pos = QPoint(widget.pos())
|
||||
pos.setX(screenAvailableGeometry.x())
|
||||
widget.move(pos)
|
||||
elif (
|
||||
widget.pos().x() + widget.frameGeometry().width()
|
||||
> screenAvailableGeometry.width()
|
||||
):
|
||||
pos = QPoint(widget.pos())
|
||||
pos.setX(
|
||||
pos.x()
|
||||
- (
|
||||
pos.x()
|
||||
+ widget.frameGeometry().width()
|
||||
- screenAvailableGeometry.width()
|
||||
)
|
||||
)
|
||||
widget.move(pos)
|
||||
|
||||
# Y boundary
|
||||
if widget.pos().y() < screenAvailableGeometry.y():
|
||||
pos = QPoint(widget.pos())
|
||||
pos.setY(screenAvailableGeometry.y())
|
||||
widget.move(pos)
|
||||
elif (
|
||||
widget.pos().y() + widget.frameGeometry().height()
|
||||
> screenAvailableGeometry.height()
|
||||
):
|
||||
pos = QPoint(widget.pos())
|
||||
pos.setY(
|
||||
pos.y()
|
||||
- (
|
||||
pos.y()
|
||||
+ widget.frameGeometry().height()
|
||||
- screenAvailableGeometry.height()
|
||||
)
|
||||
)
|
||||
widget.move(pos)
|
Reference in New Issue
Block a user