... to get the top bar to be drag-able, not the whole window ... ?
Извините, но я не понял, что вы хотите перетащить. Попробуйте:
from PyQt5 import QtWidgets, QtCore, uic
from PyQt5.QtCore import Qt, QObject, QThread, pyqtSignal, QCoreApplication, QPoint
from PyQt5.QtWidgets import (QApplication, QPushButton, QVBoxLayout, QWidget,
QFormLayout, QGridLayout, QLabel, QDialog, QHBoxLayout,
QDesktopWidget, QMainWindow)
class LoginWindow(QMainWindow): # - (QWidget):
def __init__(self):
super(LoginWindow, self).__init__() # +
# self.App = QtWidgets.QApplication([])
# self.LoadedApp = uic.loadUi("LoginWindow2.ui")
uic.loadUi("LoginWindow2.ui", self)
# self.LoadedApp.setWindowFlags(Qt.FramelessWindowHint)
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
self.pressing = False
self.start = QPoint(0, 0)
self.center()
# self.oldPos = self.LoadedApp.pos()
self.oldPos = self.pos()
# self.LoadedApp.show()
# self.App.exec()
def mouseReleaseEvent(self, QMouseEvent):
self.pressing = False
def mousePressEvent(self, event):
self.oldPos = event.globalPos()
def mouseMoveEvent(self, event):
delta = QPoint (event.globalPos() - self.oldPos)
self.move(self.x() + delta.x(), self.y() + delta.y())
self.oldPos = event.globalPos()
def center(self):
# qr = self.LoadedApp.frameGeometry()
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
# self.LoadedApp.move(qr.topLeft())
self.move(qr.topLeft())
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = LoginWindow()
w.show()
sys.exit(app.exec_())
![enter image description here](https://i.stack.imgur.com/5Zod6.png)
Обновление
Я все еще хочусделайте так, чтобы окно можно было перетаскивать по экрану, удерживая нажатой кнопку мыши, находящуюся в области QLabel в самой верхней части окна, которая в результате должна выступать в качестве вкладки. Та область, где лежит кнопка х. Как бы мне это сделать?
from PyQt5 import QtWidgets, QtCore, uic
from PyQt5.QtCore import Qt, QObject, QThread, pyqtSignal, QCoreApplication, QPoint
from PyQt5.QtWidgets import (QApplication, QPushButton, QVBoxLayout, QWidget,
QFormLayout, QGridLayout, QLabel, QDialog, QHBoxLayout,
QDesktopWidget, QMainWindow)
class LoginWindow(QMainWindow):
def __init__(self):
super(LoginWindow, self).__init__()
uic.loadUi("LoginWindow2.ui", self)
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
self.pressing = False
self.start = QPoint(0, 0)
self.center()
self.oldPos = self.pos()
def mouseReleaseEvent(self, QMouseEvent):
self.pressing = False
def mousePressEvent(self, event):
self.oldPos = event.globalPos()
def mouseMoveEvent(self, event):
if event.pos().y() > 20: # <---
return # <---
delta = QPoint (event.globalPos() - self.oldPos)
self.move(self.x() + delta.x(), self.y() + delta.y())
self.oldPos = event.globalPos()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = LoginWindow()
w.show()
sys.exit(app.exec_())