【发布时间】:2017-07-31 04:46:45
【问题描述】:
我目前正在用 Python 为 Maya 编写 UI 脚本。
所以,我的 UI 顶部有不同的选项卡,我不想将每一段代码都放在 MainClass 中,因为那样会太乱太长。对于每个选项卡,我想将其脚本写入不同的 .py 文件。我想在__init__ 函数下创建连接,同时将另一个脚本中的函数加载到这个MainClass 中使用。
问题是,我应该如何在新文件中从 UI 调用 objectName?我尝试导入 MainClass 代码,但这不起作用,我不想在新的 .py 文件中初始化 UI 窗口。有什么好的方法来解决这个问题?
编辑
例子:
test.ui 文件有一个标记为“打印”的按钮和一个列表小部件。每次按下“打印”按钮时,列表小部件上都会出现“Hello World”字样。
在 loadUi_test.py 文件中
def loadUi(uiFile):
#code that loads ui
def getMayaWindow():
#gets main Maya Window
ptr = apiUI.MQtUtil.mainWindow()
if ptr is not None:
return shiboken.wrapInstance(long(ptr), QtGui.QMainWindow)
class mainClass():
def __init__(self, parent = getMayaWindow()):
super(pipeWindow,self).__init__(parent)
self.setupUi(self)
def closeEvent(self,event):
super(mainClass, self).closeEvent(event)
在function_test.py中
def printFunc():
listWidget.clear()
listWidget.addItem("Hello World!")
在 init.py
中from pipeline import loadUi_test
from pipeline import function_test
uiFile = "test.ui"
b = loadUi_test.loadUi(uiFile)
a = loadUi_test.mainClass()
a.pushButton.clicked.connect(function_test.printFunc(b))
这不起作用,我得到一个错误“元组对象没有属性listWidget”
如果我改为这样做:a.pushButton.clicked.connect(function_test.printFunc(a)),我会收到错误“无法连接信号 clicked()”
【问题讨论】:
标签: python user-interface pyqt maya