Это то, что я видел в документах, но я не могу получить точный ответ на этот конкретный пробел в моих знаниях, и из-за этого я постоянно сталкиваюсь с стенами, ничто, кажется, действительно не покрывает его на этом уровне:Python: как правильно использовать внешние функции
У меня есть несколько окон, все они должны быть перетаскиваемы, поэтому я создаю файл утилиты. В этом файле у меня есть это:
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
И это будет работать, если я ставлю его в один файл (и не требует от другого) с фактическим окном.
Вопрос в том, как я могу позвонить этому из другого файла (того, который имеет окно пользовательского интерфейса)?
Я звоню ему
from utils import *
Технически эти функции являются доступными, просто набрав
mouseReleaseEvent(x,x)
Но мне нужен интерфейс, чтобы импортировать эти функции, так что в основном файле после выставляя «из импорта utils *» Я печатаю:
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_())
У меня есть большие пробелы в моем знании Python из-за обучения и использовать его исключительно изнутри Autodesk Maya в течение длительного времени - я пытаюсь мостике зазоры в настоящее время. Спасибо за любую помощь.
Не быть грубым, но вы в значительной степени переформулировали мой вопрос, не предоставив ответа. Я с удовольствием прислушаюсь, если у вас есть решение :) – Vii