我想使用鼠标移动QtWidgets.QtWidget(不 QPushButton , QLabel 等)。我在网上到处搜索,但找不到答案。 mousePressEvent 似乎就是这样,但它不起作用。
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_hGUI(QtWidgets.QWidget):
def __init__(self):
QtWidgets.QWidget.__init__(self)
def setupUi(self, hGUI):
hGUI.setObjectName("hGUI")
hGUI.resize(161, 172)
hGUI.setMinimumSize(QtCore.QSize(200, 200))
hGUI.setMaximumSize(QtCore.QSize(200, 200))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
hGUI = QtWidgets.QWidget()
ui = Ui_hGUI()
ui.setupUi(hGUI)
hGUI.show()
sys.exit(app.exec_())
我正在使用Python 3.5,我正在使用Qt Designer创建GUI,然后将其转换为python代码。
编辑:我正试图通过点击它来移动无边框窗口。
答案 0 :(得分:1)
这是一个非常简单的问题先生,
假设您必须拥有一个变量来保存您的小部件的位置并根据您的需要与其进行交互。
这是最简单的例子。
from PyQt5.QtWidgets import QWidget
class MyMovableWidget(QWidget):
"""WToolBar is a personalized toolbar."""
homeAction = None
oldPos = QPoint()
def __init__(self):
super().__init__()
def mousePressEvent(self, evt):
"""Select the toolbar."""
self.oldPos = evt.globalPos()
def mouseMoveEvent(self, evt):
"""Move the toolbar with mouse iteration."""
delta = QPoint(evt.globalPos() - self.oldPos)
self.move(self.x() + delta.x(), self.y() + delta.y())
self.oldPos = evt.globalPos()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
coolWidget = MyMovableWidget()
coolWidget.show()
sys.exit(app.exec_())
这么简单不是吗? :d 强>
答案 1 :(得分:-1)
我设法让它工作,感谢@bnaecker告诉我代码实际上创建了两个小部件,我已经替换了代码中的一些东西。基本上,只需编辑将.ui转换为.py时生成的代码,这样它只会创建一个小部件。 最多的变化发生在这里:
if __name__ == "__main__":
import sys
sys.excepthook = excepthook
app = QtWidgets.QApplication(sys.argv)
hGUI = QtWidgets.QWidget(flags=QtCore.Qt.FramelessWindowHint)
ui = Ui_hGUI()
ui.setupUi(hGUI)
hGUI.show()
sys.exit(app.exec_())
编辑:
if __name__ == "__main__":
sys.excepthook = excepthook
app = QtWidgets.QApplication(sys.argv)
hGUI = Ui_hGUI()
sys.exit(app.exec_())
在retranslateUi(self)的末尾添加self.show(),替换每个" hGUI"在代码中使用" self"如果它是一个参数,则删除它(除了按钮和标签之类的控件)。 以下是代码,非工作代码与工作代码:https://gist.github.com/anonymous/0707b4fef11ae4b31cf56dc78dd3af80 注意:在新代码中,应用程序被称为" VirtualMemories"。