这是我看过很多文档的东西,但我无法得到关于我知识上的这个特定差距的确切答案,因此我一直在碰壁,在这个层面上似乎没有什么能真正涵盖它:
我有几个窗口,它们都应该是可拖动的,所以我正在构建一个实用程序文件。在这个文件中,我有这个:
def mouseMoveEvent(self, event):
if self.moving: self.move(event.globalPos()-self.offset)
def mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.moving = True; self.offset = event.pos()
def mouseReleaseEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.moving = False
如果我将它放入带有实际窗口的单个文件中(并且不要从另一个文件中调用),这将起作用。
问题是,我如何从另一个文件(具有 UI 窗口的文件)调用它?
我打电话给它
from utils import *
所以从技术上讲,这些功能都可以通过键入来访问
mouseReleaseEvent(x,x)
但我需要 UI 来导入这些功能,所以在主文件中放置“from utils import *”后我输入:
self.moving = False
但无论我做什么,都会出错。所以问题是封装首先列出的函数(第一个代码块)以便我可以从我的 UI 文件中调用它们的正确方法是什么?
这是我的用户界面代码:
#!/usr/bin/env python
import sys
import os
from PyQt4 import QtCore, QtGui
from vibotCss import css
from viUtils import *
class viBadOSUI(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
#setup window
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
self.resize(300, 150)
center(self)
self.setMouseTracking(True)
#additional code
self.show()
self.setStyleSheet(css)
app = QtGui.QApplication(sys.argv)
window = viBadOSUI()
sys.exit(app.exec_())
由于长期以来仅在 Autodesk Maya 中学习和使用它,我的 Python 知识存在很大差距——我现在正试图弥合上述差距。感谢您的任何帮助。