【发布时间】:2020-12-19 08:41:31
【问题描述】:
我想在 pyqt5 中使用 QFrame 拖动窗口。 尝试函数 mouseMoveEvent 但我收到有关 move() 的错误 添加mouseMoveEvent函数进行移动但不起作用并返回错误:
Traceback(最近一次调用最后一次):文件“main.py”,第 47 行,在 鼠标移动事件 self.move(self.pos() + event.globalPos() - self.dragPos) AttributeError: 'Ui_MainWindow' 对象没有属性 'move'
这是我使用 pyuic5 从 ui 文件创建到 py 的示例代码
main.py
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
import t
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
# Remove title bar
MainWindow.setWindowFlag(QtCore.Qt.FramelessWindowHint)
MainWindow.resize(800, 450)
MainWindow.setMinimumSize(QtCore.QSize(800, 450))
MainWindow.setMaximumSize(QtCore.QSize(800, 450))
MainWindow.setStyleSheet("QMainWindow {background: transparent; }\n"
"QToolTip {\n"
" color: #ffffff;\n"
" background-color: rgba(27, 29, 35, 160);\n"
" border: 1px solid rgb(40, 40, 40);\n"
" border-radius: 2px;\n"
"}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setGeometry(QtCore.QRect(0, 0, 800, 450))
self.frame.setStyleSheet("QFrame {\n"
"background-image: url(:/1/welcome.jpg);\n"
"}")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
# Connect frame to mouseMoveEvent
self.frame.mouseMoveEvent = self.mouseMoveEvent
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
def mouseMoveEvent(self, event):
if event.buttons() == QtCore.Qt.LeftButton:
self.move(self.pos() + event.globalPos() - self.dragPos)
self.dragPos = event.globalPos()
event.accept()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
【问题讨论】:
标签: python python-3.x qt pyqt5